QT学习记录003——VS2019创建QTdll项目并调用(无界面版、初学者详细步骤)

(有个大哥这里已经写的很详细了,我按照他的步骤一次就成功了,这里纯做个记录)
VS2017+QT生成动态库(DLL)并完成调用

第一节、VS2019创建QTdll项目(无界面)

一、创建QT库
在这里插入图片描述
设定好项目名称和位置(我这里用的是默认的项目名):
在这里插入图片描述
“Next":
在这里插入图片描述
“Next":
在这里插入图片描述
”Finish“:
在这里插入图片描述
项目创建成功,可以看到这里自动生成了这些文件:
在这里插入图片描述
第二步:定义几个导出函数用于测试:
在这里插入图片描述

#include "qstring.h"
QString GetInformation();
int Add(double a, double b);

第三步:编写函数的动作:
在这里插入图片描述

QString QtClassLibrary1::GetInformation()
{
	QString info = "hello";
	return info;
}
int QtClassLibrary1::Add(double a, double b)
{
	double sum = a + b;
	return sum;
}

第四步:生成:点击”生成“——>”生成解决方案“(or:Ctrl + B)会看到生成了这几个文件:
在这里插入图片描述

第二节、VS2019调用QTdll项目(无界面)

第一步:创建新项目:
在这里插入图片描述
设定好项目名称和位置(我这里用的是默认的项目名):
在这里插入图片描述
”Next“:
在这里插入图片描述
”Finish“:
在这里插入图片描述
项目创建成功,可以看到项目底下自动生成了这个文件:
在这里插入图片描述
第二步:将”QtClassLibrary1.h“ 文件、“qtclasslibrary1_global.h”文件和“QtClassLibrary1.lib”文件移动到图示位置:
在这里插入图片描述
将“QtClassLibrary1.dll”文件移动到图示位置:
在这里插入图片描述
第三步:引用头文件调用DLL
在这里插入图片描述

#include "QtClassLibrary1.h"
#include "qtclasslibrary1_global.h"
#include "qdebug.h"

#pragma comment(lib,"QtClassLibrary1.lib")
#pragma execution_character_set("utf-8")
    QtClassLibrary1 dll;
    qDebug() << "信息:" << dll.GetInformation();
    qDebug() << "加法" << dll.Add(24, 45);

第四步:运行
在这里插入图片描述
在这里插入图片描述

第三节、部分小知识点总结

另外,里面有几个小的知识点这里集结一下:

  1. 调用DLL时,main.cpp里面有这样一行代码
#pragma comment(lib,"QtClassLibrary2.lib")

虽然能大概猜出来这句代码大概是导入DLL库的意思,但是本菜鸟本着严谨的学习态度,还是百度了一下。
我找到的最容易理解的解释是:
**这是告诉编译器在编译形成的.obj文件和.exe文件中加一条信息,使得 链接器在链接库的时候要去找QtClassLibrary2.lib这个库,不要先去找别的库。
** 参考链接:添加链接描述
然后我又找了“ #pragma comment()”比较书面化的解释:
#pragma comment是一个编译器指令,指示Visual C ++在生成的目标文件中留下注释。链接器在处理对象文件时可以读取该注释。
#pragma comment(lib, libname) 告诉链接器将’libname’库添加到库依赖关系列表中,就好像您已经将它添加到项目属性中一样 Linker->Input->Additional dependencies

  1. 关于源代码中有中文字符无法识别问题,我注意到程序中有这样一行代码
#pragma execution_character_set("utf-8")

百度了一下,见下图:
在这里插入图片描述
编译器将源代码中的窄字符和窄字符串文本编码为可执行文件中 UTF-8
我在程序里测试了一下,确实少了这行代码就无法识别中文。
参考链接:#pragma execution_character_set解释

  • 9
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Qt创建调用DLL(动态链接库)可以通过以下步骤实现: 1. 创建DLL项目: 在Qt Creator中选择“新建项目”,选择Qt Widgets Application。然后在下一步选择“库”选项,选中“动态库”,点击“下一步”进行设置。命名项目并选择保存路径,然后点击“完成”创建DLL项目。 2. 实现DLL函数: 在DLL项目中的.cpp源文件中编写要导出的函数。例如,创建一个函数来计算两个整数的和: ```cpp int sum(int a, int b) { return a + b; } ``` 3. 导出函数: 在DLL项目的.h头文件中声明要导出的函数。在函数声明前添加宏定义`__declspec(dllexport)`,以指定该函数为导出函数: ```cpp #ifndef MYDLL_H #define MYDLL_H #include <QtGlobal> #if defined(MYDLL_LIBRARY) # define MYDLL_EXPORT Q_DECL_EXPORT #else # define MYDLL_EXPORT Q_DECL_IMPORT #endif extern "C" MYDLL_EXPORT int sum(int a, int b); #endif // MYDLL_H ``` 4. 生成DLL文件: 在Qt Creator中使用编译器构建项目生成DLL文件。 5. 调用DLL函数: 在另外的Qt项目中,将DLL文件复制到该项目的目录下。然后在.pro文件中添加以下内容: ``` LIBS += -L$$PWD/ -lmydll INCLUDEPATH += $$PWD/ DEPENDPATH += $$PWD/ ``` 然后在.cpp源文件中包含头文件并调用DLL函数: ```cpp #include "mydll.h" int result = sum(5, 3); ``` 确保程序可以找到DLL文件并进行执行。 通过上述步骤,就可以在Qt中成功创建调用DLL文件了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值