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

news2024/7/4 5:02:46

目录

一、下载OSGeo4W

二、配置VS

三、测试代码

四、补充:配置QT插件 

五、导出项目为模板

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


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

一、下载OSGeo4W

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

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

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

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

 安装完毕如上图所示。

二、配置VS

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

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

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

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

(二)打开项目属性,将下列目录添加到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 <qgsapplication.h>

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

如图所示

 

五、导出项目为模板

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

导出模板

 一直下一步就行

 使用模板新建项目

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

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

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

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

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

相关文章

世界算力简史(上)

1946年2月14日&#xff0c;在美国宾夕法尼亚州东南部的费城&#xff0c;人们正在像以往一样正常工作和生活。 忽然&#xff0c;他们发现&#xff0c;房间里的灯暗了下来。 刚刚经历过二战的人们&#xff0c;对这种情况习以为常。他们心想&#xff1a;“是不是哪里的电力线路又坏…

骑行,自由和安全,哪个第一?

自行车运动&#xff0c;绿色自由&#xff0c;但安全为本。 自由&#xff0c;对于自行车运动来说&#xff0c;是骑行的初衷和核心。它不仅代表着一种无拘无束的出行方式&#xff0c;更是一种生活态度&#xff0c;一种挑战自我&#xff0c;追求极致的精神。就像鱼儿需要海洋&…

Spring Bean 生命周期的执行流程

问题描述 Spring 生命周期全过程大致分为五个阶段&#xff1a; 1、创建前准备阶段 2、创建实例阶段 3、依赖注入阶段 4、 容器缓存阶段 5、销毁实例阶段 下图是 Spring Bean 生命周期完整流程图&#xff0c;其中对每个阶段的具体操作做了详细介绍&#xff1a; 一、创建前准备阶…

数字员工助力农行安全生产数字化转型应用实践

党的二十大指出&#xff0c;“以数字中国建设助力中国式现代化&#xff0c;加快建设网络强国、数字中国”&#xff0c;2022年1月发布《“十四五”数字经济发展规划》提出&#xff0c;加强类人智能、自然交互与虚拟现实等技术研究。近年来&#xff0c;各大银行纷纷推出自己的数字…

报错 | Spring报错详解

Spring报错详解 一、前言二、报错提示三、分层解读1.最下面一层Caused by2.上一层Caused by3.最上层Caused by 四、总结五、解决方案 一、前言 本文主要是记录在初次学习Spring时遇到报错后的解读以及解决方案 二、报错提示 三、分层解读 遇到报错的时候&#xff0c;我们需要…

一起来看看 Compose Accompanist

好久不见&#xff0c;真的挺久了&#xff0c;之前一个月写的文章比现在多半年的都多。今年第一篇文章是简单写了下 Android 14 的适配&#xff1a;Android 14 又来了&#xff1f;别扶&#xff01;抬起我来吧&#xff01; 今天咱们来一起看看 Compose Accompanist 吧&#xff0…

DC电源模块负载情况不佳的原因

BOSHIDA DC电源模块负载情况不佳的原因 DC电源模块是电子设备中不可或缺的部件之一。在实际应用中&#xff0c;往往会遇到DC电源模块负载情况不佳的情况&#xff0c;例如电压下降、电流不稳等。这些问题的出现&#xff0c;往往会导致电子设备无法正常工作、降低设备的可靠性和…

Python爬虫的解析(学习于b站尚硅谷)

目录 一、xpath  1.xpath插件的安装  2. xpath的基本使用  &#xff08;1&#xff09;xpath的使用方法与基本语法&#xff08;路径查询、谓词查询、内容查询&#xff08;使用text查看标签内容&#xff09;、属性查询、模糊查询、逻辑运算&#xff09;  &#xff08;2&a…

如何制作业务流程图?6步教程附通用模板!

业务流程图是指实现特定业务目标所涉及的活动流程的可视化表示。它们用于记录和分析业务流程&#xff0c;有助于识别瓶颈、低效和改进机会。本文将为大家介绍制作业务流程图的通用步骤&#xff0c;让新手也能快速掌握一份业务流程图的绘制方法。 1. 明确流程 首先&#xff0…

7.6 创建对象内存分析

7.6 创建对象内存分析 主程序实例 package com.baidu.www.oop;import com.baidu.www.oop.demo03.Pet;public class Application {public static void main(String[] args) {Pet dog new Pet();dog.name "旺财";//这里的对象的属性在类中需要定义为public&#xff…

2023-08-08 Ubuntu 挂载U盘 fdisk -l 、sudo mount /dev/sdb1 /mnt/mydisk

一、基本命令 1、插入U盘&#xff0c;查看U盘是否被系统识别&#xff1a; 打开终端&#xff0c;输入&#xff1a; sudo fdisk -l 查看系统是否识别U盘&#xff0c;如果识别&#xff0c;会显示U盘的相关信息&#xff0c;如果没有识别&#xff0c;则说明系统没有识别U盘。 2…

【雕爷学编程】Arduino动手做(193)---移远 BC20 NB+GNSS模块8

37款传感器与模块的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&#x…

我设置了IIS的默认文档为什么还是提示403 - 禁止访问: 访问被拒绝。

我设置了IIS的默认文档为什么还是提示403 - 禁止访问: 访问被拒绝。 这个问题我是在处理dedeCMS站点时发现的问题 解决方法&#xff1a; 打开IIS》应用程序池》&#xff08;找到你的站点应用池&#xff09;》右键》基本设置》版本&#xff1a;选择2.0》管道&#xff1a;选择“…

Qt6之QListWidget——Qt仿ToDesk侧边栏(1)

一、 QLitWidget概述 注意&#xff1a;本文不是简单翻译Qt文档或者接口函数&#xff0c;而侧重于无代码Qt设计器下演示使用。 QListWidget也称列表框类&#xff0c;它提供了一个类似于QListView提供的列表视图&#xff0c;但是它具有一个用于添加和删除项的经典的基于项的接口…

​币安或面临「美司法部」欺诈指控

作者&#xff1a;维特根斯坦他弟 美国媒体semafor独家报道&#xff0c;知情人士透露&#xff0c;美国司法部正计划对币安提出欺诈指控&#xff0c;但又担心消费者会为此付出的巨大代价。 知情人士表示&#xff0c;联邦检察官担心他们起诉币安&#xff0c;可能会引发该交易所发生…

Django进阶

1.模板 1.1 寻找html模板 TEMPLATES [{BACKEND: django.template.backends.django.DjangoTemplates,DIRS: [os.path.join(BASE_DIR, templates)],APP_DIRS: True,OPTIONS: {context_processors: [django.template.context_processors.debug,django.template.context_process…

开窗积累之学习更新版

1. 开窗使用1之 count range between current row and current row 将相同排序字段的值进行函数计算 selectsku_id,substr(create_date,1,7) date_month,order_id,create_date,sku_num*price,sum(sku_num*price) over (partition by sku_id order by substr(create_date,1,7)…

M2I触摸屏与PLC通信手册下部

其它推荐设置见内部同步、端子块、清除发送CTS置于0V位置。 固定设置在偶校验&#xff0c;数据比特7位&#xff0c;停止比特位在第2比特位上。 (3) C500-LK203 拨动开关设置 开关 设置项目 开关设置状态ON OFFSW1 1~5 制定站号 0 1 2 … 30 31 1 站号设置 OFF ON OFF … OFF…

stable-diffusion-webui 界面汉化

本教程通过安装 sd-webui-bilingual-localization 插件来达到汉化目的, 项目地址为:https://github.com/journey-ad/sd-webui-bilingual-localization 一、安装插件 先进入插件安装界面 在搜索栏搜索 zh_CN Localization 中文语言包, 项目地址: https://github.com/dtlnor/st…

vue+iviewUi+oss直传阿里云上传文件

前端实现文件上传到oss&#xff08;阿里云&#xff09;适用于vue、react、uni-app&#xff0c;获取视频第一帧图片 用户获取oss配置信息将文件上传到阿里云&#xff0c;保证了安全性和减轻服务器负担。一般文件资源很多直接上传到服务器会加重服务器负担此时可以选择上传到oss&…