C++调用dll文件步骤
一、基本知识
1、DLL是一个包含可由多个程序同时使用的代码和数据的库。使用dll可以提高代码的复用率,简化部署与安装。
二、使用方法
使用封装好的dll文件有两种方式,一种需要lib库;另一种不需要lib库,使用反射获取dll。分别为加载时动态链接和运行时动态链接。
1、加载时动态链接
在加载时动态链接中,应用程序像调用本地函数一样对导出的DLL函数进行显示调用。要使用加载时动态链接,需要在编译和链接应用程序时提供头文件和导入库文件(.lib)。
2、运行时动态链接
在运行时动态链接中,应用程序调用LoadLibrary函数或LoadLibraryEx函数以在运行时加载DLL。成功加载DLL后,可以使用GetProcAddress函数获得要调用的导出的DLL函数的地址。在使用运行时动态链接时,不需要使用导入库文件。
以调用以下三个文件为例:
方法一:加载时动态链接
1、将.dll文件、.lib文件、.h文件拷贝到目标工程的目录下
2、在目标工程下设置对应的lib库目录
在头文件"CSCInterface.h"中声明接口函数:
int __stdcall GetCSCInterfaceVersion(char *version);
bool __stdcall OpenGuideLight();
将CSCInterface.h文件添加 .cpp文件即可使用
#include "CSCInterface.h"
3、在此基础上加载时动态链接还有以下方式,直接在.cpp文件下使用
using namespace std;
#pragma comment(lib,"..\\release\\CSCInterface.lib")
extern "C" _declspec(dllimport) int GetCSCInterfaceVersion(char *version);
extern "C" _declspec(dllimport) bool OpenGuideLight();
参考:https://www.jianshu.com/p/29ffeb66042e
三、解决调用dll文件时出现“无法找到“xxx.exe”的调试信息,或者调试信息不匹配。未使用调试信息生成二进制文件。”问题
首先打开菜单 项目->项目属性页
1、选择 配置属性->链接器->调试->生成调试信息 改为 是
2、选择 配置属性->C/C++ ->常规->调试信息格式 改为 用于“编辑并继续”的程序数据库(/ZI)
3、选择 配置属性->C/C++ ->优化->优化 改为 已禁用(/Od)