`

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笔记,回带值样例

    这篇“vs2008制作dll笔记,回带值样例”是关于如何在VS2008中创建DLL以及如何在其他项目中调用这些DLL的教程。下面我们将深入探讨这个话题。 首先,DLL是一种包含可由多个程序同时使用的函数和资源的库。这样可以...

    Typora.7z高效简洁笔记

    这对于IT从业者记录技术问题和解决方案,或是教师制作教学材料都非常实用。插入代码时,Typora会自动识别代码语言并高亮显示,提高代码可读性。 4. **跨平台** Typora支持Windows、MacOS和Linux等主流操作系统,...

    PB和HTML做的电子笔记本

    利用Access做数据库,并用PB和js做了一个网页插件(后来不好用了,可能是IE升级和安全的缘故),可以触发运行并下载网页内容和图片,批量多线程下载,还用BCB写了个解析网页和找窗口的DLL。 直到CSND出现网摘这个...

    IP更换大师,经常使用笔记本的朋友知道,来回切换IP,非常麻烦,制作一小工具供大家使用

    1. RegDll.dll:这是一个动态链接库(DLL)文件,通常用于存储和执行特定的功能模块,如注册组件或者提供某些服务。在“IP更换大师”中,RegDll.dll可能包含了与IP配置相关的函数,用于读取、修改或注册系统中的网络...

    Windows笔记资料

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

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

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

    c#学习笔记.txt

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

    Vc++深入解读笔记

    ### Vc++深入解读笔记知识点概述 #### 一、Windows程序内部运行机制 - **窗口产生过程**: 在Windows操作系统中,每一个程序窗口都是通过创建窗口类并实例化为具体的窗口对象来实现的。窗口类注册完成后,可以通过`...

    你们不知道的电脑知识.docx

    - 方法二:重新注册系统动态链接库(DLL)文件,包括Shdocvw.dll、Shell32.dll、Oleaut32.dll、Actxprxy.dll、Mshtml.dll、Urlmon.dll,可能需要多次尝试。 - 方法三:如果问题由COMCTL32.DLL文件引起,可能需要...

    全面经典的VC学习笔记

    本书《全面经典的VC学习笔记》是关于VC++编程的深入学习资料,涵盖了从Windows程序运行机制到高级编程技巧的广泛知识。以下是根据书名、描述、标签和部分内容提炼出的关键知识点: 1. Windows程序内部运行机制 - ...

    VNCLI.rar_VNCLI_VNCLI中转港

    动态链接库的制作过程包括定义导出函数、编写源代码、编译和链接,最后生成DLL文件。这需要对C++或Visual Basic等编程语言有深入理解,并掌握Windows API和DLL编程技术。 【标签】"vncli vncli中转港" 暗示这个DLL...

    Ubuntu课程笔记.pdf

    - **lib**:存放共享库文件,类似于Windows下的DLL文件。 - **mnt**:通常用于挂载外部存储设备,如USB闪存盘、CD-ROM等。 - **proc**:特殊目录,提供当前系统状态信息,位于内存中而非硬盘。 - **tmp**:临时文件...

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

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

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

    标题中的“MFC简单语音识别,聊天模拟器,利用SAPI”是指使用Microsoft Foundation Class (MFC)库开发的一个小型应用程序,它集成了语音识别功能,并通过预设的问题与答案来实现简单的聊天交互。...

    VC学习笔记之三:水晶报表在VC_6.0中的使用.doc

    水晶报表(Crystal Reports)是一款强大的报表制作工具,能够帮助开发者轻松地在应用程序中生成和展示复杂的数据报表。它支持多种数据库,并且具有丰富的自定义选项。在本篇文章中,我们将详细介绍如何在Visual C++ ...

    QT学习笔记(四十多个问题解决方案)

    #### 解决VS中dll、头文件和库文件的路径问题 在Visual Studio中,可以通过以下步骤设置dll、头文件和库文件的路径: 1. 对于dll文件,可以在项目的“属性”&gt;“配置属性”&gt;“调试器”中添加路径。 2. 对于头文件(`...

    innosetup 仿有道云安装包

    【标题】"innosetup 仿有道云安装包" 涉及的主要知识点是使用Inno Setup创建类似有道云笔记的安装程序。Inno Setup是一款免费且开源的安装制作工具,常用于创建Windows应用程序的安装包,它允许开发者自定义安装界面...

    基于Jupyter Notebook的westat评分卡开发设计源码

    该项目为Jupyter Notebook环境下开发的westat评分卡设计源码,集成了351个文件,其中包含119个Python脚本、60个Graphviz(GV)图表、32个动态链接库(DLL)、30个可执行文件(EXE)、28个头文件(H)、22个单行文本...

    eread阅读器

    4. 制作个人书库:用户可以创建自定义的书库,将书籍按照主题或作者分类,便于管理和查找。 5. 利用云同步:注册账号后,eread阅读器可以将你的书籍、阅读进度和笔记同步到云端,即使更换设备也能继续阅读。 总结...

Global site tag (gtag.js) - Google Analytics