DLL文件编写
DLL文件编写
生成DLL
-
VS2019 通过创建带导出项的DLL项目选项创建DLL项目项目结构如图
-
Dll1.h
应该在这个文件中进行函数声明
可以看到,VS已经帮我们进行了导出符号和预处理器的定义
如果定义了DLL1_EXPORTS则导出符号定义为dllexport,否则就是dllimport
这两者的区别在于一个是将函数声明为导出另一个是导入。在编写DLL的时候,自然是希望将函数导出。而在另外的程序使用DLL的时候就需要将函数定为导入的。
所以,在其他项目上不应该定义DLL1_EXPORTS,不然就会将函数声明为导入。
函数声明如图
-
Dll1.cpp
在这个文件中实现刚才声明的函数
-
其他文件暂时不用管
-
Ctrl+B进行生成。因为我是在Debug模式下生成的,可以在Debug目录下找到DLL
调用DLL
通过隐式链接调用
- 将DLL项目中的Dll1.dll,.h,.lib文件复制到一个新项目中
-
在项目->属性->链接器->输入->附加依赖项 中编辑
-
编写代码调用
结果
通过显式链接调用
- 显式调用需要在刚刚.h文件中的符号定义中加上 extern “C”
- 只需要将.dll文件复制到另一个项目生成的exe目录下,编写代码
结果
后记
后来感觉这样子太麻烦了,所以重新制作了一个模板来生成DLL项目,这样子就不用分开写那么多pch之类的文件,只要写dllmain一个文件就可以了,当然需要头文件也可以自己加。
具体操作为新建一个DLL项目,将pch.h pch.cpp framwork.h 文件全部删除,然后将项目属性中的预编译头设置为不使用。最后将dllmain.cpp中包含的pch.h改为Windows.h。最后保存解决方案后导出模板即可。