上一篇文章讲完QGIS编译,分别编译了RelWithDebInfo和Release两个版本,因为在vs工程下Release也可以开启调试模式,所以没有编译Debug版本。本篇文章讲解如何将编译后的文件引入到vs工程中使用。
一、开发环境
vs2019+Qt5.15.2
从QT官网下载qt在线下载器https://download.qt.io/archive/online_installers/,按提示安装qt5.15.2,同时记得勾选对应vs的版本的tool工具选项,比如winrt_x64_msvc2019。
二、创建QT widgets Application项目
在vs2019下新建QT widgets Application项目。
选择如图所示的Qt Version,默认添加了core、Gui、Widgets模块。
三、添加引用
1.添加QT模块
在如图所示部分添加需要使用到的QT模块
2.添加QGIS文件相关引用
(1).引入头文件目录
需要使用到的QGIS源码中的头文件在这几个目录下(根据需要增删)
为了方便, 我是将需要使用的qgis头文件全放在QGISDev\include文件夹下。在附加包含目录部分,添加QGIS相关头文件目录。
(2).添加预定义处理器
这里QTN_VERSION_RIBBON=5.8.1是因为我的工程使用的QtitanRibbon UI控件,所以需要添加。注意添加_USE_MATH_DEFINES,否则可能会遇到报无法解析类似M_PI等math库中变量或函数的问题。
(3).添加lib文件所在目录
将qgis lib文件目录添加进来,注意Release 、Debug等版本的区分。
(3).列举lib文件
(4).Release版本设置成可调试
在以下三个地方进行设置
3.修改main.cpp,初始化QGIS环境
环境设置好后,将main.cpp中修改为如下内容(主要是为了初始化QGIS环境),就可以开始QGIS的二次开发了。
//可执行程序的当前目录
QString appDir = QCoreApplication::applicationDirPath();
//设置QSetting环境
QCoreApplication::setOrganizationName("QtQgis");
QCoreApplication::setApplicationName("QtQgis Application");
//初始化QGIS环境
QgsApplication::init(appDir);
QgsApplication::initQgis();
QgsApplication::setMaxThreads(8);
QtGis w;
w.show();
return a.exec();
4.将相应的dll拷贝到生成的.exe路径下
1.将QT、QGIS、GDAL相关的dll拷贝到生成exe的目录下,可以去安装的QT、QGIS相关目录下拷贝。比如我工程下的QT相关的dll(按需引入)
2.以上环境配置好后,运行工程时,会提示如下的错误:
解决方式:将QT相应的plugins目录下的style文件夹及platforms文件夹拷贝到生成exe的目录下,比如我的路径是:D:\Qt\5.15.2\msvc2019_64\plugins。其中style文件夹中的dll是用来设置QT界面的样式。