1. 环境准备

下载 Visual Studio。我用的是 2019 社区版。

下载 OSGeo4W。这是 Windows 环境下(OSGeo for Windows)的一个程序包管理器。我们需要的所有包都通过本工具下载获取。

OSGeo4W 是一个向导式的包管理器。因为软件源位于国外的原因,安装比较慢。好在国内也有武大的镜像可用。在选择镜像地址的步骤添加 http://gwmodel.whu.edu.cn/mirrors/osgeo4w 这个地址就行了。

典型安装会下载许多用不到的库。所以最好选择高级安装,手动选择需要的库:

  • Desktop 分类下点选 qgis-ltr:这个是 QGIS 桌面端软件(你甚至都不需要单独去下载 QGIS 发行包,用这个就行了);
  • Libs 分类下点选 qgis-ltr-devel:这个是 QGIS 的开发库文件;
  • Libs 分类下点选 qt5-devel:这个是 Qt 的开发库文件。

Edit:经测试,QGIS 并不会自动选择 Qt 作为依赖,需要手动点选。

剩下的 OSGeo4W 会自动帮你选择依赖项。

Commandline_Utilities 分类下是各种命令行工具,包括 Python;Web 分类下主要是 QGIS Server 相关。

开发库下载完毕之后就可以准备建立 C++ 项目了。建立一个 C++ 空项目。我使用的是 VS 2019 社区版。

Edit:

2022 年初,最新长期支持版 3.22发布。议使用最新版本。基于 Qt4 的老旧的 QGIS 2.18 版已停止支持。不建议使用。

2. 设置项目包含目录和库目录

打开新建项目的属性页,在左侧选择“VC++ 目录”。

以下均以长期稳定版 qgis-ltr 为例。

包含目录:

打开项目属性,将下列目录添加到“包含目录”中:

C:\OSGeo4W\apps\qgis-ltr\include
C:\OSGeo4W\apps\Qt5\include\QtWidgets
C:\OSGeo4W\apps\Qt5\include\QtXml
C:\OSGeo4W\apps\Qt5\include\QtGui
C:\OSGeo4W\apps\Qt5\include\QtCore
C:\OSGeo4W\apps\Qt5\include

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

库目录:

将下列目录添加到“库目录”中:

C:\OSGeo4W\apps\qgis-ltr\lib
C:\OSGeo4W\apps\Qt5\lib

3. 设置附加依赖项

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

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

4. 设置调试环境

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

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

这一步的目的是让程序在调试的过程中,能正确的获取到运行时所需的 DLL 动态库。注意在部署的时候,需要把所有依赖的 DLL 拷贝出来跟程序一起打包发布。

5.复制dll文件

将C:\OSGeo4W\apps\Qt5\plugins文件下的platforms文件夹防止到运行项目的目录下,同时将需要的的dll复制到项目目录下

示例:

#define _USE_MATH_DEFINES
#include <cmath>
#include <qgsapplication.h>
#include <qgsproviderregistry.h>
#include <qgsmapcanvas.h>
#include <qgsvectorlayer.h>
#include <qgsproject.h>int main(int argc, char* argv[])
{// 创建 QgsApplication 实例QgsApplication app(argc, argv, true);// 设置并检查数据插件目录QgsProviderRegistry::instance("C:/OSGeo4W/apps/qgis-ltr/plugins");// 控制台打印已载入的插件目录qDebug() << "QGIS data providers loaded:" << QgsProviderRegistry::instance()->providerList() << Qt::endl;// 设置 GDAL 数据目录环境变量qputenv("GDAL_DATA", "C:/OSGeo4W/share/gdal");// 创建 QgsCanvas 画布实例QgsMapCanvas c;const QString file_dir = "E:/shapefile/water.shp";// 从磁盘 .shp 文件创建矢量图层QgsVectorLayer* pVectorLayer = new QgsVectorLayer(file_dir, "river");// 确认图层是否创建成功qDebug() << "Is layer valid:" << pVectorLayer->isValid();// 将图层添加到画布上c.setLayers(QList<QgsMapLayer*>() << pVectorLayer);// 设置画布窗体标题并显示画布// 画布本身是 QWidget 的子类,因此可以承担 QWidget 的所有操作c.setWindowTitle("QGIS 二次开发:画布");c.show();// 缩放到图层的空间范围c.zoomToFullExtent();// 启动 QgsApplication 实例return app.exec();}

参考资料:
http://caiyi.tech/post.html?postKey=qgis_dev_1_env_setup

在Visual Studio 2019 搭建 QGIS3.22 二次开发环境相关推荐

  1. 【Tools】Visual Studio 2019搭建Qt开发环境

    00. 目录 文章目录 00. 目录 01. 概述 02. Visual Studio 2019安装 03. Qt6安装 04. qt-vsaddin插件下载 05. qt-vsaddin插件安装 0 ...

  2. Visual Studio 2019连接自动的Sql Server开发版数据库(C#语言)

    Visual Studio 2019连接自动的Sql Server开发版数据库,C#语言 连接字符串: server=(LocalDB)\MSSQLLocalDB;database=master;in ...

  3. ANSA二次开发 - 在PyCharm上搭建ANSA/META二次开发环境

    文章目录 与PyCharm IDE集成 简介 ANSA和META自动补全 安装说明 在PyCharm中工作 与PyCharm IDE集成 简介   PyCharm 是一个集成开发环境(IDE).它是专 ...

  4. 通过Visual Studio 2019搭建DirectX 12开发环境

    必备要求:windows 10操作系统+VS2019(其他版本也可以比如VS2015和VS2017). Visual Studio 2019下载:https://visualstudio.micros ...

  5. 【译】Visual Studio 2019 中 WPF UWP 的 XAML 开发工具新特性

    原文 | Dmitry 翻译 | 郑子铭 自Visual Studio 2019推出以来,我们为使用WPF或UWP桌面应用程序的XAML开发人员发布了许多新功能.在本周的 Visual Studio ...

  6. 基于C#(Visual Studio 2013)的AutoCAD2016二次开发(一)编程环境的搭建

    机械设计中一般都采用AutoCAD设计软件,在复杂 CAD问题或特殊用途的设计中,依据原有软件的功能往往难以解决问题,在此情况下,只是会使用软件的基本功能是不够的.本着自学和相互交流的原则,撰写如下学 ...

  7. Visual Studio 2019 搭建Flex

    一.介绍 这篇博客主要介绍怎样在vs2019上搭建Flex.因为最近编译原理课程需要搭建,自己动手试了试,也分享给大家. 二.需要的资源 下载地址:https://sourceforge.net/pr ...

  8. [翻译] Visual Studio 2019 RC版发布

    今天,我们将分享 Visual Studio 2019 的发布候选版(RC 版) - 这是在 4 月 2 日的虚拟发布活动上正式发布之前的最后步骤之一. 您可以在 visualstudio.com/d ...

  9. Visual Studio 2019 16.3 正式发布,支持 .NET Core 3.0

    微软正式发布了 Visual Studio 2019 16.3 版本,主要更新内容如下: .NET Core 3.0 Visual Studio 版本 16.3 包括对 .NET Core 3.0 的 ...

  10. 微软Visual Studio 2019版本16.3 正式发布,支持 .NET Core 3.0

    微软正式发布了Visual Studio 2019 16.3版本,主要更新内容如下: .NET Core 3.0 Visual Studio版本16.3包括对 .NET Core 3.0 的支持. 注 ...

最新文章

  1. SQL标准结构化语言练习,SQL增删查改,SQL实现对bank数据的操作
  2. NGINX-RTMP复杂度分析
  3. 常见的6种JavaScript设计模式
  4. 【渝粤题库】国家开放大学2021春2247社会工作政策法规题目
  5. 马云发情人节寄语:AI和算法是算不清楚婚姻的
  6. foxmail提示不知道这样的主机_开车上八楼停车场,坡道拐弯会车要这样做,知道了不吃亏...
  7. Halcon缺陷检测——机器学习1
  8. 一个demo学会css
  9. 2022-2027年(新版)中国条码识读设备行业运行形势与发展策略建议报告
  10. 关于惠普笔记本电脑电源已连接但显示未充电的解决办法
  11. ckplayer html5 添加广告,ewebeditor下利用ckplayer增加html5 (mp4)全平台的支持
  12. matlab app designer学习笔记1——简易计算器
  13. 轩辕Linux开放实验室
  14. 黑马程序员——堆和栈的区别(转载)
  15. Web前端Lec6 - JavaScript
  16. 记录一下爬取微信小程序失败案例,fiddler抓包
  17. 冬天是个冻手冻脚的流氓
  18. 目前为止最全的微信小程序项目实例源码
  19. mysql too many_Mysql错误:Too many connections的解决方法
  20. 基于Hough变换的直线和圆的检测与提取

热门文章

  1. Vue——商品详情页(未完,写着以免忘掉)
  2. IOS中impactor报81错误解决方法
  3. Application provided invalid, non monotonically increasing dts to muxer in stream
  4. matlab分数怎么表示,分子为1的分数怎么输入matlab
  5. 博文翻译:Tackling the Cold Start Problem in Recommender Systems
  6. 大数据与云计算 | 华科软院2020年期末考试试题及答案
  7. 图像宽度所占字节必须是4的倍数详解
  8. 笔记本加装固态硬盘,安装Ubuntu
  9. JVM-由常量池 运行时常量池 String intern方法想到的(三)之String内存模型
  10. SQL Server排序规则