配置很多次QGIS二次开发环境,失败过很多次,现在终于成功了,把配置过程记录下来给正在为配置环境的地信人一些参考。

目录

一、下载QGIS二次开发SDK-OSGeo4w

二、在VS中配置QGIS

1、在VS中创建QT项目

2、项目属性设置

三、添加示例代码 

1、替换主函数代码

2、将相关dll文件放在项目.exe目录下

3、点击运行

一、下载QGIS二次开发SDK-OSGeo4w

Download QGIS

QGIS二次开发 添加 QgsAttributes qgis二次开发环境搭建_qt

https://www.qgis.org/en/site/forusers/download.html

QGIS二次开发 添加 QgsAttributes qgis二次开发环境搭建_c++_02

QGIS二次开发 添加 QgsAttributes qgis二次开发环境搭建_c++_03

下载完成后,运行 osgeo4w-setup.exe,进入安装向导。

QGIS二次开发 添加 QgsAttributes qgis二次开发环境搭建_qt_04

QGIS二次开发 添加 QgsAttributes qgis二次开发环境搭建_c++_05

这里注意选择存储路径,后面配环境会频繁用到,建议存储路径D:\OSGeo4W,笔者存储在D:\QGIS\OSGeo4W。

QGIS二次开发 添加 QgsAttributes qgis二次开发环境搭建_#include_06

 这里默认,点击下一步。

QGIS二次开发 添加 QgsAttributes qgis二次开发环境搭建_#include_07

QGIS二次开发 添加 QgsAttributes qgis二次开发环境搭建_qt_08

 选第一个网站,然后下一步。

QGIS二次开发 添加 QgsAttributes qgis二次开发环境搭建_#include_09

在这里下载qgis包和 qt库,保证下载后..\OSGeo4W\apps文件中由Qt和qgis-ltr文件夹。(我已下载,可能界面提示有区别)

QGIS二次开发 添加 QgsAttributes qgis二次开发环境搭建_c++_10

QGIS二次开发 添加 QgsAttributes qgis二次开发环境搭建_c++_11

QGIS二次开发 添加 QgsAttributes qgis二次开发环境搭建_c++_12

完成后就可以开始进行VS的配置了!

二、在VS中配置QGIS

1、在VS中创建QT项目

由于QGIS二次开发环境必须在Release环境下才能运行,因此将Debug删去,只保留Release版本。其他默认下一步,成功创建项目。

QGIS二次开发 添加 QgsAttributes qgis二次开发环境搭建_qt_13

2、项目属性设置

(1)设置附加包含目录

在项目->xx(项目名)属性->c/c++->常规中,添加“附加包含目录” ,目录为下载的OSGeo4W的相关库存储路径,需要根据自己存储路径个性化设置。

QGIS二次开发 添加 QgsAttributes qgis二次开发环境搭建_qt_14

D:\QGIS\OSGeo4W\apps\qgis-ltr\include

D:\QGIS\OSGeo4W\apps\Qt5\include

D:\QGIS\OSGeo4W\apps\Qt5\include\QtCore

D:\QGIS\OSGeo4W\apps\Qt5\include\QtWidgets

D:\QGIS\OSGeo4W\apps\Qt5\include\QtXml

D:\QGIS\OSGeo4W\apps\Qt5\include\QtGui

 (2)设置附加库目录

在项链接器->常规中,添加“附加库目录” 。

QGIS二次开发 添加 QgsAttributes qgis二次开发环境搭建_开发语言_15

D:\QGIS\OSGeo4W\apps\Qt5\lib

D:\QGIS\OSGeo4W\apps\qgis-ltr\lib

 (3)设置附加依赖项

QGIS二次开发 添加 QgsAttributes qgis二次开发环境搭建_二次开发_16

qgis_core.lib

qgis_app.lib

qgis_gui.lib

Qt5Core.lib

Qt5Gui.lib

Qt5Widgets.lib

(4)其他设置

1>设置预处理器定义

在c/c++->预处理器->预处理器定义:

_USE_MATH_DEFINES 

QGIS二次开发 添加 QgsAttributes qgis二次开发环境搭建_#include_17

不设置可能会出现以下报错:

QGIS二次开发 添加 QgsAttributes qgis二次开发环境搭建_二次开发_18

2>设置C++语言标准

将 配置属性->常规->C++语言标准 设置为 ISO C++17标准(/std:c++17) 

QGIS二次开发 添加 QgsAttributes qgis二次开发环境搭建_#include_19

若为默认选项,会有以下报错。

QGIS二次开发 添加 QgsAttributes qgis二次开发环境搭建_二次开发_20

三、添加示例代码 

1、替换主函数代码

main.cpp中的代码替换成下列:

#include "peizhi.h" //这个需要根据自己的项目名修改
#include <QtWidgets/QApplication>
#include <qgsapplication.h>
#include <qgsmapcanvas.h>
#include <qgsrasterlayer.h>
#include <qgsmaptoolpan.h>

int main(int argc, char* argv[])
{
	QApplication a(argc, argv);
	QMainWindow main_window;

	QgsMapCanvas map_canvas;
	QgsRasterLayer layer(R"(E:\data\lucc2017.tif)");  //括号内的路径是本地影像路径,需要更改
	map_canvas.setLayers({ &layer });
	map_canvas.setExtent(layer.extent());
	map_canvas.refresh();
	QgsMapToolPan map_tool_pan(&map_canvas);
	map_canvas.setMapTool(&map_tool_pan);

	main_window.setCentralWidget(&map_canvas);
	main_window.show();
	return a.exec();
}

 此时运行报错——找不到QGIS相关dll

QGIS二次开发 添加 QgsAttributes qgis二次开发环境搭建_二次开发_21

2、将相关dll文件放在项目.exe目录下

QGIS二次开发 添加 QgsAttributes qgis二次开发环境搭建_二次开发_22

QGIS二次开发 添加 QgsAttributes qgis二次开发环境搭建_开发语言_23

QGIS二次开发 添加 QgsAttributes qgis二次开发环境搭建_#include_24

 将下列bin中所有的文件全部复制到此目录下:

D:\QGIS\OSGeo4W\apps\Qt5\bin

D:\QGIS\OSGeo4W\bin

D:\QGIS\OSGeo4W\apps\qgis-ltr\bin

3、点击运行

成功利用VS配置QGIS二次开发环境!

若出现

QGIS二次开发 添加 QgsAttributes qgis二次开发环境搭建_#include_25

则将下列文件夹复制到.exe目录下。

D:\QGIS\OSGeo4W\apps\Qt5\plugins\platforms

QGIS二次开发 添加 QgsAttributes qgis二次开发环境搭建_开发语言_26

参考资料:

qgis二次开发环境搭建(超级详细)_xhome516的博客

QGIS二次开发环境搭建(VS2022+QGIS3.24.0+QT5.15.2)_哔哩哔哩_bilibili