QGIS二次开发二:不重新编译QGIS进行二次开发

目录

一、下载OSGeo4W

二、配置VS

三、测试代码

四、补充:配置QT插件 

五、导出项目为模板

六、Release模式的一个问题解决


由于重新编译QGIS对于初学者来说还是有一定难度,因此这里介绍另外一种不编译QGIS也能够二次开发的方法,不需要下载QGIS的整套源码。

一、下载OSGeo4W

https://download.osgeo.org/osgeo4w/v2/osgeo4w-setup.exe

然后搜索qgis-ltr,表示长期支持版。当然你也可以选择qgis的其他版本。

QGIS二次开发二:不重新编译QGIS进行二次开发_第1张图片

其实二次开发用不到上面的qgis desktop,但是为了详细了解qgis的功能还是建议安装。安装之后就可以打开qgis软件。

QGIS二次开发二:不重新编译QGIS进行二次开发_第2张图片

 然后点击下一页安装即可,注意要把它推荐的依赖项也一起安装了。

QGIS二次开发二:不重新编译QGIS进行二次开发_第3张图片

 安装完毕如上图所示。

二、配置VS

我选用的是VS2017版本,具体版本要求可以参照官方文档

 这里注意一点:我看其他同学写的教程需要在本地安装QT,然后给VS配置QT插件,添加本地安装的QT环境。再次说明下,这个不是必须的,你可以这样做,但是建议使用QGIS自带的QT环境进行开发。

下面的[OSGeo4W]均表示你本地安装OSGeo4W的文件夹。

(一)新建一个C++空项目,添加一个源文件,名字任意。

QGIS二次开发二:不重新编译QGIS进行二次开发_第4张图片

(二)打开项目属性,将下列目录添加到VC++目录的“包含目录”中

[OSGeo4W]\apps\Qt5\include
[OSGeo4W]\apps\Qt5\include\QtCore
[OSGeo4W]\apps\Qt5\include\QtGui
[OSGeo4W]\apps\Qt5\include\QtXml
[OSGeo4W]\apps\Qt5\include\QtWidgets
[OSGeo4W]\apps\qgis-ltr\include

OSGeo4W 中,所有安装的库都分门别类存放在 apps 文件夹中。[OSGeo4W]\apps\Qt5\include 下面存放的是 Qt5 的不同模块头文件,按文件夹存放,除了我上面提到的四个基本模块外,可以根据需要添加。

(三)将下列目录添加到VC++目录的“库目录”中

[OSGeo4W]\apps\Qt5\lib
[OSGeo4W]\apps\qgis-ltr\lib

(四)在项目属性页中依次选择“链接器”,“输入”,在“附加依赖项”中添加

Qt5Core.lib
Qt5Gui.lib
Qt5Widgets.lib
qgis_core.lib
qgis_gui.lib

 (五)设置预处理器

在C/C++,预处理器,预处理定义中填入

_USE_MATH_DEFINES

(六)设置C++语言标准

在C/C++,语言,C++语言标准中,设置为ISO C++17 标准 (/std:c++17)

(七)设置编码

在C/C++,所有选项,附加选项中,设置为/utf-8

(八)设置调试环境

在项目属性页中选择“调试”,设置“环境”的值为

PATH=D:\OSGeo4W\bin;D:\OSGeo4W\apps\qgis-ltr\bin;D:\OSGeo4W\apps\Qt5\bin

这一步的目的是让程序在调试的过程中,能正确的获取到运行时所需的 DLL 动态库。

三、测试代码

在刚才新建的cpp文件中添加如下代码

#include 

int main(int argc, char **argv)
{
    // 创建 QgsApplication 实例
	QgsApplication app(argc, argv, true);
}

成功运行!恭喜你已经完成了QGIS二次开发的环境配置!

四、补充:配置QT插件 

基于 Qt 的程序在运行时需要各种 Qt 插件的支持(如图片格式插件、数据库插件、运行平台插件等)。这些插件文件同样以 DLL 的形式存在于 [OSGeo4W]\apps\Qt5\plugins 文件夹。程序运行过程中如果遇到特定的情况,将动态载入这些插件(如载入 .jpg 图像需要 qjpeg.dll)。所以我们必须告知 Qt 程序插件文件夹的位置。除了把 plugins 文件夹里面的内容直接整个复制到可执行文件同目录之外,我们可以借助 qt.conf 配置文件。在可执行文件同目录下创建 qt.conf 文件,输入如下内容

[Paths]
Plugins=D:/OSGeo4W/apps/Qt5/plugins

如图所示

 QGIS二次开发二:不重新编译QGIS进行二次开发_第5张图片

五、导出项目为模板

导出项目为模板后,我们新建项目就可以选择这个模板,就不用再花时间去配置环境,但是QT的插件和调试环境还是要再配置一次!

导出模板

QGIS二次开发二:不重新编译QGIS进行二次开发_第6张图片

 一直下一步就行

QGIS二次开发二:不重新编译QGIS进行二次开发_第7张图片

 使用模板新建项目

QGIS二次开发二:不重新编译QGIS进行二次开发_第8张图片

六、Release模式的一个问题解决

为了使导出的项目模板使用起来更加方便,我分别配置了Debug模式和Release模式的项目属性,但是Debug模式下可以正常运行的项目,Release模式下却报错fatal error LNK1000: Internal error during IMAGE::BuildImage

解决方法是:在配置属性的常规,全程序优化,设置为无全程序优化

QGIS二次开发二:不重新编译QGIS进行二次开发_第9张图片

你可能感兴趣的:(QGIS,qgis)