`

vs2008制作dll笔记

    博客分类:
  • COM+
 
阅读更多

本文参考http://leongod.iteye.com/blog/1104575

 

 

使用vs2008制作dll文件,生成动态链接库,采用显示加载,以下记录实现过程:

 

1.制作dll文件

  • vs2008中,File > New Project > Other Language > Win32 > Win32 Console Application. 输入项目名称:MyDll。点击【OK】,【Next】,选择dll单选按钮,完成。
  • vs2008会自动生成一些代码,不用管它。创建MyDll.h,代码如下
    MyDll.h 为了提高可用性,写了可回带值的函数供参考
    //MyDLL.h   
    extern "C" _declspec(dllexport) int Max(int a, int b);   
    extern "C" _declspec(dllexport) int Min(int a, int b);   
    extern "C" _declspec(dllexport) bool cim2scada(char* cimId, char** scadaId);
     
  • 创建MyDll.cpp
  • // MyDll.cpp : Defines the exported functions for the DLL application.  
    //  
      
    #include "stdafx.h"  
    #include"MyDll.h"   
    #include <iostream>  
      
    int Max(int a, int b)   
    {   
        if(a>=b)return a;   
        else   
            return b;   
    }   
    int Min(int a, int b)   
    {   
        if(a>=b)return b;   
        else   
            return a;   
    }    
      
    bool cim2scada(char* cimId, char** scadaId){  
        char *result;  
        if(cimId == NULL){  
            printf("空指针!");  
            return false;  
        }else if(strlen(cimId) == 0){  
            printf("cimId无值!");  
            return false;  
        }  
      
        if(strcmp(cimId, "aaaaaa") == 0){  
            result = "1000";  
        }else if(strcmp(cimId, "bbbbbb") == 0){  
            result = "2000";  
        }  
      
        *scadaId = result;  
        printf("fun scadaId:%s\n", *scadaId);  
        return true;  
    }  
     
  • 编译一下,到工程的DEBUG目录,就可以找到MyDll.dll文件

2.创建测试程序

  • vs2008中,File > New Project > Other Language > Win32 > Win32 Console Application. 输入项目名称:DllTest。点击【OK】,【Next】,选择console单选按钮,去掉“预编译头”默认勾选项,完成。
  • #include "windows.h"  
    #include <iostream>  
      
    void main(){  
        typedef int(*pMax)(int a, int b);   
        typedef int(*pMin)(int a, int b);   
        typedef bool(*pcim2scada)(char* cimid, char** scada);  
        HINSTANCE HDLL;   
        HDLL=LoadLibrary(L"MyDll.dll");//加载动态链接库MyDll.dll文件;   
        pMax Max=(pMax)GetProcAddress(HDLL,"Max");   
        pMin Min=(pMin)GetProcAddress(HDLL,"Min");   
        pcim2scada cim2scada=(pcim2scada)GetProcAddress(HDLL,"cim2scada");   
        int a = Max(5, 12);   
          
        char cimId[] = "aaaaaa";  
        char * scadaId = "";  
        bool b = cim2scada(cimId, &scadaId);  
      
        printf("Max结果为%d",a);   
        printf("cimId:%s, scadaId:%s", cimId, scadaId);  
        FreeLibrary(HDLL);//卸载MyDll.dll文件;   
    }  
     
  • 编译一下
  • 拷贝MyDll.dll文件到DllTest项目的Debug目录下
  • 打开一个控制台(cmd),进入DllTest > Debug目录,运行DllTest.exe
  • 输出结果:
    fun scadaId : 1000
    Max结果为12
    cimId:aaaaaa, scadaId:1000

有疑问,见附件或给我发邮件。 

 

分享到:
评论

相关推荐

    vs2008制作dll笔记,回带值样例

    NULL 博文链接:https://leongod.iteye.com/blog/1104575

    Windows笔记资料

    笔记本通过手机上网; 恢复XP系统右键新建公文包; 实现批处理的完全无人值守运行; ... BIOS设置图解教程AMI BIOS.doc;...找DLL下载站,dll下载,DLL大全,系统开机提示,DLL文件缺少,windows dll - 找DLL下载站

    regsvr32dll

    OpenSSL来制作证书,在IIS中配置HTTPS(SSL)笔记.pdf

    c#学习笔记.txt

    c#学习笔记(1) 51099在线学习网发布 文章来源:网络收集 发布时间:2006-05-25 字体: [大 中 小] 51099在线学习网 http://www.51099.com 1, 结构(struct) 与 类(class) [attributes] [modifiers] struct ...

    MFC简单语音识别,聊天模拟器,利用SAPI

    运行在笔记本上,利用笔记本的话通和音响,一个预定问题与答案的聊天的小程序。 说出问题,程序识别之后会回答相应的答案。

    Delphi二维码、分组、批量打印笔记和例程

    1、使用PtImageRW.dll和PtQREncode.dll动态连接库,使用uQRCode生成二维码图像,如此就可以在报表中予以打印了,具体如何用uQRCode实现绘制二维码,本人水平太低,无法参透;结合QuikReport就可以实现打印二维码了,...

    gen-art:使用生成算法制作计算机艺术

    但是,如果您在VS 2017中进行开发,建议您使用解决方案平台x64 ,否则应下载并修复缺少的FreeImage.dll常见问题。 它仅在Win32模式下发生。 另外,强烈建议在存储空间较小的笔记本电脑上禁用“自动预编译标题”,该...

    Ex_DUI 4.1 学习笔记之按钮简单例程-易语言

    ] 包内libexdui2.dll是脱壳的DLL,方便想内存加载的同学.加载方法论坛有很多.就不献丑了. [?] 主题文件不是标准格式,制作方法查阅泆寒开源帖中 Resource 部分. @  NoGirlFriendException @ NyanRabbit @ Eusio ...

    Chat-Easily:易于配置的 php + javascript 聊天

    检查.htaccess文件,阅读注释并为该文件制作自己的版本,您应该决定在那里放置什么规则,我添加了一些基本规则,在您完成.htaccess文件的编辑后,您知道.htaccess包含哪些规则打开httpd.conf并根据.htaccess文件中...

    unix大全(涵盖了UNIX学习的方方面面)

    56.aris中有类似windows的DLL有关的函数吗? 57.数据存储系统浅说 58.olaris 下建立可使用 pkgadd 的软体 package 59.aris 系统log日志原理分析 60.工作站在网络中的深入应用:将SOLARIS设置成软路由器 61.工作站在...

    asp.net知识库

    VS2005 ASP.NET本地化学习笔记&感受 在自定义Server Control中捆绑JS文件 Step by Step 深度解析Asp.Net2.0中的Callback机制 使用 Web 标准生成 ASP.NET 2.0 Web 站点 ASP.NET 2.0基于SQLSERVER 2005的aspnetdb.mdf...

    T-ReXcape:基于C#和Windows窗体的本地多人游戏(学校项目)

    T-ReXcape是一个小型的本地多人游戏,可容纳2人,是在一个学校项目中制作的。 所有图形都是手绘的,以达到类似纸张的效果。 规章制度 C#/ Windows表单 基于回合的本地多人游戏 滑鼠控制 没有DLL 文献资料 德语: ...

    PintaDemoExtension:Pinta 的演示扩展,用于教程和开发使用

    这是一个简单的演示项目,将来用于制作 Pinta 扩展的教程。 目前被用作开发 Pinta 扩展基础设施的测试用例。 ##笔记 它有当前 Pinta.Core 和 Pinta.Tools 的 lib 副本来构建,它们目前需要手动更新。 (需要在...

    w32:Windows API for Go的包装

    自从我制作了此克隆后,尽管原始存储库又重新进行了开发,但是我决定朝一个略有不同的方向发展。 该库旨在反映win32 api和其他Windows系统dll,而无需在其之上构建其他抽象。 它试图被尽可能地组织/记录。 该镜像...

    由0晋升200%系统高手

    实例3:乔装成DLL文件的新型恶意网页病毒 实例4:网络安全攻防拆解 实例5:光盘刻进病毒真的只能报废吗? 实例6:关好“比尔”家的后门——系统后门大揭秘 第3章 自古用机谁无死 3.1 Windows XP常见问题排...

    VB网络编程实例

    ◆ 123.htm 自动更新工作站的应用程序 ◆ 124.htm 自己的IE——用VB制作器 ◆ 125.htm HTTP协议(学习笔记) ◆ 126.htm HTTP协议四--关于Chunked编码 ◆ 127.htm IE器完全控制 ◆ ...

    若干源程序资料12.rar

    2012-06-11 21:01 909,116 VC++动态链接库(DLL)编程.pdf 2012-06-11 21:25 138,752 VC++开发BHO插件——定制你的浏览器.doc 2012-06-11 21:33 800,368 VC绘图 游戏简易教程.pdf 2012-06-11 21:41 21,331 ...

    基于hhww改进版的传统五笔输入法(新版支持WIN7)

    此五笔输入法是用hhhhwwww改进的输入法生成器制作而成,是他的开拓性的工作,使本输入法臻于完美。 此五笔输入法安装包集成的输入法设置工具imetool是由Silence开发的,此工具可以方便地调节输入法的外观和操作参数...

    基于hhww改进版的传统五笔输入法

    此五笔输入法是用hhhhwwww改进的输入法生成器制作而成,是他的开拓性的工作,使本输入法臻于完美。 此五笔输入法安装包集成的输入法设置工具imetool是由Silence开发的,此工具可以方便地调节输入法的外观和操作参数...

Global site tag (gtag.js) - Google Analytics