最近需要把部分功能打包给其他小组用,结果反馈VS2019生成的dll动态库在Qt内调用不成功,无奈又拿Qt封装了一遍,记录下;
一、Qt生成dll动态库
先说版本,Qt5.15.1;
1、Qt内新建项目-Library-C++Library,type选shared library;
生成的项目自动包含了管理pro文件、h头文件、cpp源文件;
2、在头文件内完成声明;
#ifndef FUN_DLL_H
#define FUN_DLL_H
#include "fun_dll_global.h"
class FUN_DLL_EXPORT Fun_dll
{
public:
Fun_dll();
int fun_add(int a, int b);
};
#endif // FUN_DLL_H
3、在源文件中完成实现;
#include "fun_dll.h"
Fun_dll::Fun_dll()
{
}
int Fun_dll::fun_add(int a, int b)
{
return a + b;
}
4、运行,可以看到在默认路径下生成了需要的dll和lib文件;
二、Qt内动态库的调用
1、新建一个测试项目,这里选取了Qt的控制台项目,建立后自动包含了Pro、h、cpp文件;
2、拷贝,将生成的dll文件、lib文件及.h头文件拷至新的工程目录下;
3、右键工程文件-添加库-库类型选外部库-参数如下图所示,完成后自动在pro文件内添加了相应路径;
4、右键工程文件-添加现有文件,将相应的头文件添加到测试工程中去;
5、在源码中引入头文件,并测试,成功调用;
至于为何VS2019生成的dll动态库无法在QT中调用的原因,请大佬指导,报错是找不到对应的函数,extern C已加;