PS:前几天朱大丽,和我说她不会生成自己的DLL,我也不会啊,有什么办法,只能宠着她帮她做呗。不然整体阿谀奉承我,让我略略略 ~
一、VS创建DLL
http://wangzi6147.github.io/2015/05/05/DLL.html
1.创建一个DLL工程
2.添加头文件 MyDllCalculator.h
1 |
|
3.添加源文件 MyDllCalculator.cpp
1 |
|
4.生成解决方案,生成Debug版本的库文件,所以在Debug文件下生成.lib和.dll
注意:如果生成的库依赖其他动态链接库,需要把依赖的.dll文件一同打包发布
二、使用DLL
添加工程的头文件目录:工程—属性—配置属性—c/c++—常规—附加包含目录:加上头文件存放目录
MyDllCalculator.h 的存放路径
添加文件引用的lib静态库路径:工程—属性—配置属性—链接器—常规—附加库目录:加上lib文件存放目录
添加工程引用的lib文件名:工程—属性—配置属性—链接器—输入—附加依赖项:加上lib文件名(用绝对路径)
添加工程引用的dll动态库:把引用的dll放到工程的 可执行文件 所在的目录下
程序运行结果
三、DLL 导入导出
1. __declspec(dllexport)
声明一个导出函数,即这个函数要从本DLL导出。省掉在DEF文件中手工定义导出哪些函数的一个方法。但是,如果DLL里全是C++的类,无法在DEF里指定导出的函数,,只能用__declspec(dllexport)
导出类
2. __declspec(dllimport)
声明一个导入函数,是说这个函数是从别的DLL导入。不使用,也能正确编译,但使用,可以使编译器生成更好的代码,因为它可以确定函数是否存在于 DLL 中,这使得编译器可以生成跳过间接寻址级别的代码,而这些代码通常会出现在跨 DLL 边界的函数调用中。但是,必须使用__declspec(dllimport)
才能导入 DLL 中使用的变量。