vs2017+Qt创建Qtdll项目并调用
前言
将一些公用的工具函数可以进行封装并生成Dll,方便组内成员直接调用,提高开发效率
创建Qtdll项目
按照如下图方式在 vs2017 中创建一个Qtdll项目
项目创建成功后会自动生成两个.h文件和一个.cpp文件如下图。此外刚创建项目后include部分会报错,需要增加两行代码#include <iostream>
;using namespcae std;
在创建的Qtdll项目中编写测试函数(求和函数)
1
2
3
4
5
6
7
8
9
10
11class QTCLASSLIBRARY1_EXPORT QtClassLibrary1
{
public:
QtClassLibrary1();
int Add(int x, int y);
};
int QtClassLibrary1::Add(int x, int y)
{
return x + y;
}在vs里面的解决方案资源管理器栏内右键点击
解决方案
,选择生成解决方案
,成功后会看到如下界面
同时在Qtdll项目x64\Debug
路径下可以看到生成的文件(.dll与.Lib)
创建调用Qtdll的项目
为了方便期间,创建一个QtConsoleApplication项目对生成的Qtdll进行调用
将Qtdll项目的中的两个.h文件(
QtClassLibrary1.h
,qtclasslibrary1_global.h
)以及.lib文件(QtClassLibrary1.lib
)移动到QtConsoleApplication项目的如下图位置将Qtdll项目的中的.dll文件(
QtClassLibrary1.dll
)移动到QtConsoleApplication项目的如下图位置在QtConsoleApplication项目中添加头文件(
QtClassLibrary1.h
,qtclasslibrary1_global.h
)与lib文件(QtClassLibrary1.lib
),并调用Dll1
2
3
4
5
6
7
8
9
10
11
12
13
14
15#include <QtCore/QCoreApplication>
#include "QtClassLibrary1.h"
#include "qtclasslibrary1_global.h"
#include "qdebug.h"
#pragma comment(lib,"QtClassLibrary1.lib")
#pragma execution_character_set("utf-8")
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QtClassLibrary1 dll;
qDebug() << "加法" << dll.Add(56, 45);
return 0;
}
补充知识
- 导入dll库
1
#pragma comment(lib,"QtClassLibrary1.lib")
- 这是告诉编译器在编译形成的.obj文件和.exe文件中加一条信息,使得链接器在链接库的时候要去找QtClassLibrary1.lib这个库,而不是先去找别的库
- #pragma comment(lib, libname)告诉链接器将
libname
库添加到库依赖关系列表中,与添加到项目属性中的操作一样 Linker->Input->Additional dependencies
- 解决源代码中有中文字符无法识别问题
1
#pragma execution_character_set("utf-8")
- 编译器将源代码中的窄字符和窄字符串文本编码为可执行文件中UTF-8,缺少这行代码就无法识别中文
本文作者: 贾明晖
本文链接: http://minghuijia.cn/2022/01/22/vs2017-Qt%E5%88%9B%E5%BB%BAQtdll%E9%A1%B9%E7%9B%AE%E5%B9%B6%E8%B0%83%E7%94%A8/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!