Qgis3.16ltr+VS2017二次开发环境搭建(保姆级教程)

news2024/12/24 4:08:06

1.二次开发环境搭建

下载osgeo4w-setup.exeDownload QGIShttps://www.qgis.org/en/site/forusers/download.html

 点击OSGeo4W Network Installer

点击下载 OSGeo4W Installer

 

运行程序 osgeo4w-setup.exe,出现以下界面,点击下一页。

 

选中install from internet,点击下一页。 

 

设置保存的路径,我这里设置E:\OSGeo4W,点击下一页。

这里设置下载存放的路径, 我这里设置E:\Temp,点击下一页。

选择Use System Proxy Settings,进入下一步 

  

添加URL:http://gwmodel.whu.edu.cn/mirrors/osgeo4w

​  

输入qgis-ltr,点击状态变为Install状态,点下一页,然后一直点同意下一页开始下载,如下图所示。

下载完成之后,打开Vs2017开始配置 ,进行配置,以下是demo程序目录,和qgis三方库目录。

在thirdPart路径下创建qgis目录,将E:\OSGeo4W\apps\qgis-ltr-dev目录下的include目录和lib目录拷贝到下面的路径。

2. VS2017开始配置

在工具栏中找到"Qt VS Tools",点击并找到"Options"->"Versions"进行Qt配置,配置文件夹以自己安装位置为准。

附加包含目录

点击"配置属性"->"C/C++"->"常规"-->"附加包含目录"

..\thirdPart\qgis\include

附加库目录

点击"配置属性"->"链接器"->"常规"-->"附加库目录"

..\thirdPart\qgis\lib

附加依赖项

点击"配置属性"->"链接器"->"输入"-->"附加依赖项"

qgis_core.lib
qgis_app.lib
qgis_gui.lib

预处理器定义

点击"配置属性"->“C/C++”->“预处理器”,在预处理器定义中加入"_USE_MATH_DEFINES"

配好以上环境后,基本上编译没有问题了,能够生成可执行程序了。

3.程序运行

拷贝E:\OSGeo4W\apps\qgis-ltr-dev\bin的所有 DLL文件到可执行程序目录下。

拷贝E:\OSGeo4W\apps\gdal-dev\bin的 DLL文件到可执行程序目录下。

拷贝E:\OSGeo4W\apps\proj-dev\bin的 DLL文件到可执行程序目录下。

拷贝E:\OSGeo4W\bin的 DLL文件到可执行程序目录下。

拷贝E:\OSGeo4W\apps\Qt5\bin DLL文件到可执行程序目录下。

拷贝E:\OSGeo4W\apps\Qt5\plugins\platforms目录到可执行程序目录下。

4.源码

以下是运行结果。

 

static QList<QgsMapLayer *> layers;
static QgsMapCanvas *m_mapCanvas = nullptr;

GisCtrl::GisCtrl(QWidget *parent)
    : QMainWindow(parent)
{
    ui.setupUi(this);
	
    
    QString fileName = "F:/GisCtrl/x64/out/map/counties_china.shp";
	QgsVectorLayer* vecLayer = new QgsVectorLayer(fileName);

	if (!vecLayer->isValid())
	{
		QMessageBox::critical(this, "error", QString("layer is invalid: \n") + fileName);
		return;
	}

	m_mapCanvas = new QgsMapCanvas();

	m_mapCanvas->setExtent(vecLayer->extent());
	layers.append(vecLayer);
	m_mapCanvas->setLayers(layers);
	m_mapCanvas->refresh();

    setCentralWidget(m_mapCanvas);
}


int main(int argc, char *argv[])
{
	//QString PROJ_LIB_PATH = BussinessLogic::getInstance()->getProjPath();
	//qputenv("PROJ_LIB", PROJ_LIB_PATH.toLatin1());//Qt临时环境变量必

	QgsApplication app(argc, argv, true);
	QgsApplication::initQgis();

	GisCtrl w;
    w.showMaximized();
    return app.exec();
}

 5.shp素材文件

https://download.csdn.net/download/wzz953200463/88064897https://download.csdn.net/download/wzz953200463/88064897

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/771276.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【全方位解析】如何写好技术文章

前言 为何而写 技术成长&#xff1a;相对于庞大的计算机领域的知识体系&#xff0c;人的记忆还是太有限了&#xff0c;而且随着年龄的增大&#xff0c;记忆同样也会逐渐衰退&#xff0c;正如俗话所说“好记性不如烂笔头”。并且在分享博客的过程中&#xff0c;我们也可以和大…

小白带你学习Linux的rsync的基本操作(二十四)

目录 前言 一、概述 二、特性 1、快速 2、安全 三、应用场景 四、数据的同步方式 五、rsync传输模式 六、rsync应用 七、rsync命令 1、格式 2、选项 3、举例 4、配置文件 5、练习 八、rsyncinotfy实时同步 1、服务器端 2、开发客户端 前言 Rsync是一个开源的…

光线追踪计算加速:包围盒

包围盒&#xff08;Bounding box&#xff09;是加速光线追踪&#xff08;Ray Tracing&#xff09;的最简单方法&#xff0c;不一定将其视为加速结构&#xff0c;但这无疑是减少渲染时间的最简单方法。 推荐&#xff1a;用 NSDT设计器 快速搭建可编程3D场景。 使用包围盒来加速光…

椒图——靶场模拟

先查看ip&#xff0c;10.12.13.232模拟的外网ip&#xff0c;其他的模拟内网ip&#xff0c;服务里面搭建好的漏洞环境。 #第一个测试项目&#xff0c;web风险发现 新建&#xff0c;下发任务&#xff0c;点威胁检测&#xff0c;webshell&#xff0c;点扫描任务&#xff0c;点新…

迅镭激光赋能工程机械,客户连续复购激光加工设备达双赢!

工程机械是装备制造业的重要组成部分&#xff0c;当前&#xff0c;我国已成为门类齐全、规模庞大、基础坚实、竞争力强的工程机械设备制造大国。 随着工程机械产业正在全面向智能化、绿色化转型&#xff0c;激光加工成为推动工程机械产业转型升级的重要工具&#xff0c;越来越多…

一道SQL题

有个搞数仓的朋友不知道从哪儿弄了个题。。。 做了做体验了一下。。。 记录记录。 分析 要保证每天都要做新题 5天必须都做题&#xff0c;不然GG 最后一天必须做新题&#xff0c;如果最后一天做新题了&#xff0c;前面那几天没做新题&#xff0c;做的是老题 最后一天&#…

初识mysql之理解索引

目录 一、 primary key对索引的影响 1. 主键数据有序问题 2. mysql中的page 3. 主键排序问题 二、理解多个page 1. 数据在page中的保存 2. 页目录 3. 单页情况 4. 多页情况 5. 为什么除了叶子节点外的其他节点不保存数据&#xff0c;只保存目录 6. 为什么叶子节点全…

创意网页模板免费下载,让你的网站与众不同!

今天给大家带来的网站模板素材&#xff0c;网站类型丰富&#xff0c;包含户外旅行、餐饮、个人网站等等&#xff0c;可以学习和参考其中的布局排版和配色。 ⬇⬇⬇点击获取更多设计资源 https://js.design/community?categorydesign&sourcecsdn&planbbqcsdn772 1、设…

域内信息收集

将网络中多台计算机逻辑上组织到一起进行集中管理&#xff0c;这种区别于工作组的逻辑环境叫 做域。域是由域控制器(Domain Controller)和成员计算机组成&#xff0c;域控制器就是安装了活动 目录(Active Directory)的计算机。活动目录提供了存储网络上对象信息并使用网络使用该…

图像处理之canny边缘检测(非极大值抑制和高低阈值)

Canny 边缘检测方法 Canny算子是John F.Canny 大佬在1986年在其发表的论文 《Canny J. A computational approach to edge detection [J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 1986 (6): 679-698.》提出来的。 检测目标&#xff1a; 低错误率…

2023年软件测试八股文(含答案+文档)

Part1 1、你的测试职业发展是什么&#xff1f; 测试经验越多&#xff0c;测试能力越高。所以我的职业发展是需要时间积累的&#xff0c;一步步向着高级测试工程师奔去。而且我也有初步的职业规划&#xff0c;前3年积累测试经验&#xff0c;按如何做好测试工程师的要点去要求自…

汽车新品研发用泛微事井然,全过程数字化、可视化

产品研发是汽车制造产业链的运营过程中的初始阶段&#xff0c;是提升汽车企业创新力、竞争力的重要一环&#xff0c;不仅要洞悉市场变化&#xff0c;还要有效协同企业内部的各类资源… 汽车新产品研发项目周期长、资源投入大&#xff0c;面临着诸多挑战&#xff1a; 1、市场需…

采集传感器的物联网网关怎么采集数据?

随着工业4.0和智能制造的快速发展&#xff0c;物联网&#xff08;IoT&#xff09;技术的应用越来越广泛&#xff0c;传感器在整个物联网系统中使用非常普遍&#xff0c;如温度传感器、湿度传感器、光照传感器等&#xff0c;对于大部分物联网应用来说&#xff0c;采集传感器都非…

02.MySQL——CURD

文章目录 表的增删改查Create单行数据全列插入多行数据指定列插入插入否则更新替换——REPLACE RetrieveSELECT 列WHERE 条件结果排序筛选分页结果 UpdateDelete删除数据截断表 插入查询结果聚合函数group bywhere和having SQL查询中关键字优先级函数日期函数字符串函数数学函数…

Spring 事务控制

1. 编程式事务控制相关对象 1.1 平台事务管理器 1.2 事务定义对象 1.3 事务状态对象 关系&#xff1a; PlatformTransactionManager TransactionManager TransactionStatus 2. 基于XML的声明式事务控制 切点&#xff1a;&#xff08;目标对象&#xff09;业务方法&#xff…

idea不小心push的文件夹怎么处理?

第一种方式&#xff0c;把不小心push上去的人解决掉。 第二种方式&#xff0c;以我自身为例&#xff0c;同事不小心push了.idea文件夹 首先打开git bash git rm --cached .idea/ -r 然后查看一下状态 git status 接着提交修改 git commit -m "cancel track .idea file&q…

从小白到大神之路之学习运维第62天--------Ansible自动化运维工具(playbook配置深入了解2.0)

第三阶段基础 时 间&#xff1a;2023年7月17日 参加人&#xff1a;全班人员 内 容&#xff1a; playbook配置深入了解2.0 目录 一、角色 实验案例&#xff1a;&#xff08;安装Mariadb&#xff09; 二、变量 &#xff08;一&#xff09;在playbook中使用自定义变量&#xff1…

Microsoft Outlook 共享收发邮件的权限给其他人

点击File 点击Account Settings→DelegateAccess 点击Add

数据可视化自助式分析工具:jvs-bi数据扩展及函数配置说明

jvs-bi数据拓展节点 数据拓展是数据可视化加工过程中的重要工具&#xff0c;它核心的作用是对原有数据表进行加工扩展&#xff0c;实现功能如下图所示 函数配置操作过程 操作说明 1、拖动数据拓展字段&#xff0c;并将字段拓展与之前的历史节点连接起来&#xff0c;点击数据拓…

访问Liunx文件系统

访问Liunx文件系统 识别文件系统和设备 存储管理概念 Linux服务器上文件按文件系统层次结构访问。该文件系统层次结构测试由系统可用的存储设备所提供的文件系统组装而来。每个文件系统都是一个已格式化的存储设备&#xff0c;可用于存储文件。 文件系统和挂载点 要让文件系…