DLL文件编写

DLL文件编写

生成DLL

  • VS2019 通过创建带导出项的DLL项目选项创建DLL项目项目结构如图

    image-20210718001206613

  • Dll1.h

    应该在这个文件中进行函数声明

    image-20210718002340736

    可以看到,VS已经帮我们进行了导出符号和预处理器的定义

    如果定义了DLL1_EXPORTS则导出符号定义为dllexport,否则就是dllimport

    这两者的区别在于一个是将函数声明为导出另一个是导入。在编写DLL的时候,自然是希望将函数导出。而在另外的程序使用DLL的时候就需要将函数定为导入的。

    所以,在其他项目上不应该定义DLL1_EXPORTS,不然就会将函数声明为导入。

    函数声明如图

    image-20210718003823292

  • Dll1.cpp

    在这个文件中实现刚才声明的函数

    image-20210718005042981

  • 其他文件暂时不用管

  • Ctrl+B进行生成。因为我是在Debug模式下生成的,可以在Debug目录下找到DLL

调用DLL

通过隐式链接调用

  • 将DLL项目中的Dll1.dll,.h,.lib文件复制到一个新项目中

image-20210718010706795

  • 在项目->属性->链接器->输入->附加依赖项 中编辑

    image-20210718010902528

  • 编写代码调用

    image-20210718010947780

    结果

    image-20210718011002137

通过显式链接调用

  • 显式调用需要在刚刚.h文件中的符号定义中加上 extern “C”

image-20210718110038399

  • 只需要将.dll文件复制到另一个项目生成的exe目录下,编写代码

image-20210718110640607

结果

image-20210718110751107

后记

后来感觉这样子太麻烦了,所以重新制作了一个模板来生成DLL项目,这样子就不用分开写那么多pch之类的文件,只要写dllmain一个文件就可以了,当然需要头文件也可以自己加。

具体操作为新建一个DLL项目,将pch.h pch.cpp framwork.h 文件全部删除,然后将项目属性中的预编译头设置为不使用。最后将dllmain.cpp中包含的pch.h改为Windows.h。最后保存解决方案后导出模板即可。

posted @ 2021-07-22 00:24  S1mba  阅读(722)  评论(0编辑  收藏  举报