VS2022 中动态链接库生成的两种方法
动态链接库介绍
**动态链接库(Dynamic Linkable Library, DLL)**是Windows上实现代码共享的一种方式。动态链接库的源码就是函数或者类的具体实现,经编译后生成一个后缀名为dll的文件,这个文件就是动态链接库文件。这个文件不可以单独运行,需要和它的调用者(可执行程序,exe程序,或者其它的动态链接库)一起使用。
使用动态链接库的优点
(1)有利于代码和数据的共享
(2)有利于系统模块化开发
(3)有利于软件升级
(4)有利于保护软件技术
生成方法
(1)通过关键字_declspec(dllexport)导出
1、 首先再VS中创建一个空项目,添加对应的头文件和源文件,和创建普通的工程项目一样
2、在头文件test1.h中的格式如下
其中_cplusplus是cpp中的自定义宏,表示这是一段cpp代码。随后的 entern "C"必须要有,不然在项目引用中会报错,具体深层次的原因和C++与C处理函数名的机制有关,这里不展开介绍。一般情况下就按这种格式写就行。
3、在源文件test1.cpp中的格式如下
可以看出,Cpp文件中的格式和我们正常项目的代码是一样的,也就是说,对于函数的具体定义不需要做特别的处理。
4、在项目属性的-配置类型-里面将项目的配置类型改成 动态库(.dLL)模式,然后保存项目并生成解决方案,可以在解决方案目录中的Debug文件下发现生成的test.dll动态库文件和test.lib导入库文件
---------------------------------------至此,第一种方法结束-----------------------------------------------------------------------------------
(2)通过定义模板文件.def导出函数来生成
模板文件.def是一个文本文件,该文件中出现的函数名就是要导出到动态库中的函数,链接器会读取这个文件来确定哪些函数是导出函数。其具体的格式如下:
1、同样创建一个新项目,添加头文件test.h和源文件test.cpp,并在源文件下面添加新建项-代码-模块定义文件(,def),具体内容如下图。
2、同样将项目属性的配置类型改为 动态库(.dLL)模式,然后保存项目并生成解决方案,可以在解决方案目录中的Debug文件下发现生成的testDll.dll动态库文件和testDll.lib导入库文件。
---------------------------------------至此,第二种方法结束-----------------------------------------------------------------------------------