当前位置: 首页 > news >正文

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.dll

1、设置项目依赖关系

添加依赖,确保项目生成顺序正确。

操作如下:选择TestFirstLib->右键生成依赖项->项目依赖项

在打开窗口,勾选DLL库(DllFirstTest)

勾选依赖项之后,如果依赖库更新过,在编译TestFirstLib编译时,会先对DllFirstTest进行编译。

2、配置测试项目,使其能够找到头文件和库文件

方法一:

操作方法如下:选择TestFirstLib->右键选择添加->引用

在打开窗口,选择DllFirstTest链接库

经过这个操作之后,会将DllFirstLib的头文件目录添加到TestFirstLib的包含路径;将DllFirstLib生成的.lib文件链接到TestFirstLib。

方法二:

该方法为手动链接

链接头文件:右键TestFirstLib→ 属性 → C/C++ → 常规 → 附加包含目录 → 添加FirstLib项目的源码目录

在属性页内操作:

选择到dll库文件中头文件所在的目录:

链接库文件:

右键TestFirstLib→ 属性 → 链接器 → 常规 → 附加库目录 → 添加 DllFirstLib的输出目录

注意此处x64与Debug要与自己的配置选择一样的,x86就选择x86,release就选择release。

添加附加依赖项,添加.lib文件

操作如下:仍在属性页面->连接器->输入->附加依赖项

这里选择的是库文件目录下面的.lib文件,名称格式为:DLL库名称.lib。

3、确保测试文件找到DllFirstLib.dll

dll文件必须在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++新人,不足甚多,请海涵,有问题评论区可以提出交流,欢迎大家!

http://www.jsqmd.com/news/855084/

相关文章:

  • 告别调参噩梦:用nnU-Net自动搞定医学影像分割,新手也能快速上手
  • 2026年专业冷弯成型机TOP5排行:全自动冷弯型钢生产线、全自动辊压生产线、定制辊压成型模具、异型冷弯成型设备选择指南 - 优质品牌商家
  • TCGA数据库改版后,如何精准下载FFPE病理切片?手把手教你用gdc-client搞定
  • 保姆级教程:从零设计一个EG2133自举电路,手把手教你计算和选型自举电容与二极管
  • Perplexity作家搜索≠简单关键词匹配:从NLP意图识别到跨平台身份对齐的9层专业验证体系
  • 拒绝“拍脑袋“备货:武汉丝路云如何利用Flink实时计算打造跨境供应链的“数据大脑“?
  • 【Perplexity文学查询实战指南】:3大隐藏技巧让90%的文学研究效率提升300%
  • 定向井轨迹控制关键技术:200℃高温定向传感器的随钻测量应用指南
  • 最新版Cubase 15 Pro下载一键安装完整版下载安装Cubase15 Pro最新版下载安装教程支持Win/Mac双系统版送104G原厂音源Mac系统苹果不关SIP安装Cubase15.0.21
  • ARM Trusted Firmware (ATF) 入门:安全启动与可信执行环境实战指南
  • 华南及全国升降货梯专业品牌合规性排行盘点:广州液压升降机/广州液压升降货梯/广州液压简易升降机/广州液压货梯/广州直顶式升降机/选择指南 - 优质品牌商家
  • 告别root权限烦恼:用非root用户kingbase在CentOS 7上安全部署人大金仓V8数据库
  • 注册培训师、咨询师——杨刚老师简介
  • 5分钟掌握AKShare:零成本获取全球金融数据的Python神器
  • 第01期 | 写下第一行HTML:网页到底怎么运行的
  • RT-Thread PIN设备驱动:从裸机GPIO到RTOS统一管理的架构解析与实践
  • 事实核查准确率暴跌47%?Perplexity用户必须立即启用的3层人工复核开关,附配置代码
  • 一文读懂示波器测眼图:原理与实例应用
  • 毕业设计作品精选【芳心科技】基于STM32的智能家庭快递柜
  • ComfyUI-Impact-Pack V8终极指南:图像增强插件完整安装与使用教程
  • 某包丨图片+视频去水印去除工具
  • 图书馆自动化管理系统选型:智慧图书馆建设方案、智慧图书馆管理系统、智能图书馆、机关单位职工书屋、电子图书阅读平台选择指南 - 优质品牌商家
  • Hermes Agent 深度指南:一个会“自我进化“的 AI Agent,通俗易懂全解析
  • Linux信号机制深度解析:从内核实现到多线程编程实践
  • 保姆级教程:在Ubuntu 18.04上搞定ZED2i相机驱动与ROS联动(含网络报错解决)
  • 图吧工具箱下载安装和使用保姆级教程(2026实测)
  • 从济南利客行,看固驰城市旗舰店如何真正落地
  • 【限时解密】Perplexity未公开的历史资料检索协议v2.3:仅开放给前500名深度用户的私有搜索语法手册
  • 2026年5月靠谱的湖北发电机出租联系方式哪家强厂家推荐榜,静音型/常规型/大型发电车租赁厂家选择指南 - 海棠依旧大
  • 拒绝盲从与踩坑:如何用“高性价比”工具撬动AI搜索的真实红利