前言:查了好久好久网上的资料C++调用动态链接库,试了好多方法(直接创建DLL、空项目创建的)都多多少少有些问题,最后自己不断摸索着成功了,还是很开心的,接下来把最清晰的步骤分享给大家(C++新人,有什么说的不清楚的还请大佬们见谅)
图片显示部分是模板,名称可以自己起最重要的就是__declspec(dllexport)以及__declspec(dllimport)。一个是导出,一个是导入。
为像我一样懒人们提供代码粘贴
#pragma once
#ifndef BHDLL_d
#define BHDLL_d
//宏定义导出
#ifdef BHDLL__//如果没有定义DLLH 就定义 DLLH __declspec(dllexport)
#define BHDLL __declspec(dllexport)//导出
#else
#define BHDLL __declspec(dllimport)//导入
#endif // DLLH__//如果没有定义DLLH 就定义 DLLH
//编写代码区域
//导出函数
BHDLL int add(int a, int b);
BHDLL int sub(int a, int b);
//导出类
class BHDLL dllH
{
public:
int mul(int a, int b);
int div(int a, int b);
};
//以C语言方式导出函数:
extern "C"
{
BHDLL int Cadd(int a, int b);
BHDLL int Csub(int a, int b);
}
#endif
为像我一样懒人们提供代码粘贴
#include "BH_dll.h"
#include
using namespace std;
int add(int a, int b)
{
return a + b;
}
int sub(int a, int b)
{
return a - b;
}
int dllH::mul(int a, int b)
{
return a * b;
}
int dllH::div(int a, int b)
{
return a / b;
}
int Cadd(int a, int b)
{
return a + b;
}
int Csub(int a, int b)
{
return a - b;
}
把配置类型变成动态库-应用-确定-生成解决方案。
在项目文件中可以找到dll,lib,,h文件,我们要的就是这三个
添加main函数
在include文件中添加刚才BH_DLL文件生成的.h文件
在lib文件中添加刚才BH_DLL文件生成的dll和lib文件
在项目文件夹下再次添加刚才BH_DLL文件生成的dll文件
如图所示
配置新建项目的目录
库目录包含lib
链接器-输入-附加依赖项包含lib文件名称
应用-确认。
#include
using namespace std;
#include
int main()
{
cout << add(1, 0) << endl;
cout << sub(1, 0) << endl;
dllH DH;
cout << DH.div(4, 2) << endl;
cout << DH.mul(4, 2) << endl;
cout << Cadd(1, 0) << endl;
cout << Csub(1, 0) << endl;
getchar();
return 0;
}
完成!
有什么说的不对的地方还请大佬们在评论区留言,我看到了会改正,谢谢各位。
接下来会学习Qt调用C++DLL,学会了还会更新一期,如果哪位大佬知道捷径的话麻烦放个传送门在评论区呗,谢谢啦。