c++动态链接库(dll)中添加空的控制台程序,调用dll进行测试 在编写c中的dll文件时每次测试都需要导出来再拉到一个新的工程项目中进行测试每次测试一次都要重新导出和配置该方法比较繁琐想寻找更方便的解决方式便有这次记录。使用工具visual studio2022一、创建dll库新建一个dll库选择DLL项目模板为DLL项目添加项目名这里采用DllFirstTest然后创建二、编写dll文件代码创建完项目模板之后在DLL项目新建一个头文件一个主文件这里新建firstlib.h和firstlib.cpp在firstlib.h中写入我们需要的函数同时需要添加导入\导出函数本次测试函数firstlib.h实现如下#pragma once #ifdef FIRSTLIB_EXPORTS #define FIRSTLIB_API __declspec(dllexport) #else #define FIRSTLIB_API __declspec(dllimport) #endif #include iostream #include string #include opencv2/opencv.hpp class FIRSTLIB_API FirstLib { public: int add(int a,int b); int multiply(int a,int b); }接下来实现firstlib.cpp文件。在firstlib.cpp文件导入头文件并实现头文件中注册的函数注意要文件顶部定义导出宏firstlib.cpp文件如下#define FIRSTLIB_EXPORTS #include iostream #include string #include firstlib.h int FirstLib::add(int a, int b) { return a b; } int FirstLib::multiply(int a,int b) { return a * b; }三、生成dll文件当头文件及实现文件编写完毕之后生成dll文件。生成步骤1、选择动态链接库项目-鼠标右键-选择生成(生成过的可点击重新生成)。等待程序执行完成之后在visual studio下方输出框会提示生成文件存放目录四、新建控制台应用程序选择在DllFirstTest动态链接库同一个解决方案下面新建一个新的控制台应用程序创建步骤选择解决方案-右键选择添加-新建项目,操作如下图选择控制台程序空白程序或者默认输出的都可以这里命名TestFirstLib,然后点击创建五、配置控制台程序调用DLL配置控制台程序希望TestFirstLib测试项目能够1、找到firstlib.h头文件2、链接DllFirstLib.lib,3、测试程序运行时能够找到DllFirstTest.dll1、设置项目依赖关系添加依赖确保项目生成顺序正确。操作如下选择TestFirstLib-右键生成依赖项-项目依赖项在打开窗口勾选DLL库(DllFirstTest)勾选依赖项之后如果依赖库更新过在编译TestFirstLib编译时会先对DllFirstTest进行编译。2、配置测试项目使其能够找到头文件和库文件方法一操作方法如下选择TestFirstLib-右键选择添加-引用在打开窗口选择DllFirstTest链接库经过这个操作之后会将DllFirstLib的头文件目录添加到TestFirstLib的包含路径将DllFirstLib生成的.lib文件链接到TestFirstLib。方法二该方法为手动链接链接头文件右键TestFirstLib→ 属性 → C/C → 常规 → 附加包含目录 → 添加FirstLib项目的源码目录在属性页内操作:选择到dll库文件中头文件所在的目录链接库文件右键TestFirstLib→ 属性 → 链接器 → 常规 → 附加库目录 → 添加 DllFirstLib的输出目录注意此处x64与Debug要与自己的配置选择一样的x86就选择x86release就选择release。添加附加依赖项添加.lib文件操作如下仍在属性页面-连接器-输入-附加依赖项这里选择的是库文件目录下面的.lib文件名称格式为:DLL库名称.lib。3、确保测试文件找到DllFirstLib.dlldll文件必须在exe运行时能被加载最简单的办法就是将生成的DllFirstLib.dll文件直接复制到与TestFirstLib.exe同一个文件夹下。至此配置完成之后即可在测试程序中直接调用dll库文件。六、编写测试程序调用dll库文件在测试程序中新建一个main.cpp在其中导入firstlib.h头文件调用dll库程序。编码如下#include iostream #include firstlib.h #include string int main() { std::cout hello world! std::endl; FirstLib fs; std::cout add sum: fs.add(3, 2) std::endl; std::cout add sum: fs.multiply(3, 2) std::endl; return 0; }运行程序查看结果至此调用完成。C新人不足甚多请海涵有问题评论区可以提出交流欢迎大家