建立简单DLL流程(一)

动态链接库(DLL)(Dynamic Link Library或者Dynamic-link library),是微软公司在微软视图操作系统中实现共享函数库概念的一种实作方式。这些库函数的扩展名是.DLL、.OCX(包含ActiveX控制的库)或者.DRV(旧式的系统驱动程序)。

所谓的动态链接 ,就是把一些经常会公用的代码(静态链接的OBJ程序库)制作成DLL档,当可执行文件调用到DLL档内的函数时,windows操作系统才会把DLL档加载存储器内,DLL档本身的结构就是可执行文件,当程序需求函数才进行链接。通过动态链接方式,存储器浪费的情形将可大幅降低。

DLL的最初目的是节约应用程序所需的磁盘和内存空间。模块化的另一个好处是插件的通用接口使用。

建立一个简单DLL流程:

一、先建立一个DLL工程

新建一个工程,选择Win32控制台项目(Win32 console Applicatioon),并且在应用程序设置标签上,选择DLL,文件名称practice_dll

二、声明导出函数

这里通过使用__declspec(dllexport),添加到需要导出的函数前,进行声明;建立一个对应头文件名称(practice_dll.h),并在里面添加 导出函数。

在对应.cpp文件中添加函数实现方法。在DLLMAIN.cpp文件中实现也可以。

导入函数具体添加

int Add(int x,int y){ return x+y ;};

然后添加.def

选择.def文件,然后建立和文件相同名称的.def.本身模块定义文件是一个有着.def文件扩展名的文本文件,它被用于导出一个DLL的函数,他有两个必需部分:LIBRARY和EXPORTS。

LIBRARY是一个必须的部分。它告诉连接器(linker)如何命名你的DLL。EXPORTS是另一个必须的部分。这个部分使得该函数可以被其他应用程序访问到并且它创建一个导入库。当你生成这个项目时,不仅是一个.dll文件被创建,而且一个文件扩展名为.lib的导出库也被创建。

如果程序员没有为DLL模块编写一个DLLMain函数,系统会从其他运行库中引入一个不做任何操作的缺省DLLMain函数版本。在一个单线程启动和终止时,DLLMain函数也被调用。F7编译,就可以再目录debug下得到DLL和Lib。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
下面是在VS2015中建立C++ DLL库文件的步骤: 1. 打开Visual Studio 2015,点击“文件”菜单,选择“新建”->“项目”。 2. 在“新建项目”对话框中,选择“Visual C++”->“Win32”->“Win32 项目”,然后输入项目名称和存放位置,点击“确定”按钮。 3. 在“Win32应用程序向导”对话框中,选择“DLL”选项,然后点击“下一步”按钮。 4. 在“应用程序类型”页面,选择“DLL 导出符号”,然后点击“下一步”按钮。 5. 在“高级特性”页面,选择“空项目”,然后点击“完成”按钮。 6. 在“解决方案资源管理器”中,右键单击“源文件”文件夹,选择“添加”->“新建项”。 7. 在“添加新项”对话框中,选择“C++文件(.cpp)”,然后输入文件名,点击“添加”按钮。 8. 编写需要导出的函数的实现代码,并在函数声明前加上``__declspec(dllexport)``,表示该函数需要被导出。 9. 在“解决方案资源管理器”中,右键单击项目名称,选择“属性”。 10. 在属性对话框中,选择“配置属性”->“常规”,设置“目标扩展名”为“.dll”。 11. 在属性对话框中,选择“配置属性”->“链接器”->“输入”,添加需要链接的库文件。 12. 在属性对话框中,选择“配置属性”->“生成事件”,添加“Post-Build Event”脚本,用于拷贝DLL文件到指定目录,如下所示: ``` xcopy /Y "$(TargetPath)" "C:\MyLibs\" ``` 13. 点击“生成解决方案”按钮,生成DLL文件。 14. 将生成的DLL文件和导出的头文件提供给使用者。 希望这些步骤对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值