当前位置: 首页 > news >正文

QGIS开发笔记(二):Windows安装版二次开发环境搭建(上):安装OSGeo4W运行依赖其Qt的基础环境Demo

若该文为原创文章,转载请注明原文出处
本文章博客地址:https://hpzwl.blog.csdn.net/article/details/139136356

长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…

Qt开发专栏:三方库开发技术

上一篇:《QGIS开发笔记(一):QGIS介绍、软件下载和加载shp地图数据Demo》
下一篇:敬请期待…


前言

  使用QGis的目的是进行二次开发,或者说是融入我们的应用(无人车、无人船、无人机),本片描述搭建QGis二次基础开发环境,由于实在是太长了,进行了分篇:

  • 上半部分:主要是安装好后,使用QtCreator可以使用QGIs的apps下的Qt使用对应的编译器编译不带qgis的空工程。
  • 下半部分:在上半部分基础上添加qgis的依赖,并实现一个qgis的完全独立模模块化的应用,让没有安装qgis库的使用工程模板可以开始二次开发编译。

Demo

  空demo
  在这里插入图片描述

  运行qgis的demo
  请添加图片描述


注意1:注意IDE

  基于Qtcreator,所以搭建QtCreator的IDE模块化QGIS基础环境,后续qmake的加载看出使用的msvc2017x64的库,没有的话请安装vs2017x64的msvc编译器
  在这里插入图片描述


注意2:本次安装途径与直接安装文件不同

  这与直接通过下载QGIs的安装文件下载文件是不同的:
  在这里插入图片描述


注意3:本途径安装已经指定了使用的Qt版本和QtSdk

  在这里插入图片描述


Windows上部署QGis二次开发环境

步骤一:下载安装OSGeo4W安装文件

  下载地址:https://www.qgis.org/en/site/forusers/download.html
  在这里插入图片描述

  在这里插入图片描述

  

步骤二:安装OSGeo4W

  在这里插入图片描述

  点击安装:
  在这里插入图片描述

  选择自定义安装:
  在这里插入图片描述

  在这里插入图片描述

  在这里插入图片描述

  下面这个界面宣布选择开始菜单都会有,直接下一步:
  在这里插入图片描述

  在这里插入图片描述

  选择第一个挺快的,尝试过其他国内源无法连接上:
  在这里插入图片描述

  输入qgis-ltr,这代表帅选qgis的最新版本,这里显示是3.34,外面直接下的是3.36
  在这里插入图片描述

  在这里插入图片描述

  都同意下一步,最后开始下载:
  在这里插入图片描述

  在这里插入图片描述

  在这里插入图片描述

  在这里插入图片描述

  检查一下:
  在这里插入图片描述

  最新的稳定发布版本,检查一下:
  在这里插入图片描述

  在这里插入图片描述

步骤三:打开QtCreator配置qmake编译器

  Qt5.15.x版本默认使用QtCreator6.x,但是我们先使用Qt5.9.3带的QtCreator为4.4.1。
  在这里插入图片描述

  暂时也不知道lib是哪个msvc版本的,但是添加qmake就知道了,往下走:
  在这里插入图片描述

  在这里插入图片描述

  知道了msvc2017x64版本,就要配置编译器了,本机已经安装了vs系列,并且安装了msvc2017x64版本,无需配置,配置页面如下:

步骤四:新构建套件QGis3.34.7_Qt5.15.13_msvc2017x64

  注意名称、编译器(vs2017x64是msvc2017x64是v15版本)和qmake的版本选择,配置通过则会是黄色惊叹号,构建套没有问题。(构建套有问题则会是红色,无法编译使用。)
  在这里插入图片描述

步骤五:新建一个测试空工程检测Qt配置

  在这里插入图片描述

  在这里插入图片描述

  在这里插入图片描述

  在这里插入图片描述

  在这里插入图片描述

  在这里插入图片描述

  在这里插入图片描述

  查看“入坑一:jom编译错误”解决,然后继续:
  在这里插入图片描述

  查看“入坑二:编译uic.exe错误代码0xc0000135”解决,然后继续:
  在这里插入图片描述

  至此,在QtCreator使用QGIs带的QtSdk成功。


入坑

入坑一:jom编译错误

问题

  Jom编译错误
  在这里插入图片描述

原理

  使用nmake,不使用jon

解决

  在这里插入图片描述

入坑二:编译uic.exe错误代码”0xc0000135”

问题

  在这里插入图片描述

过程

  有些库无法调用到所以无法启动,使用cmd查看一番:
  在这里插入图片描述

  在这里插入图片描述

  在这里插入图片描述

  这些库本身还依赖了一些,拷贝过去缺失的继续cmd会提示,这里不一一列出了。
  搜索后得到:
  在这里插入图片描述

  在这里插入图片描述

  所以,Qt编译运行环境需要包含OSGeo4W的bin下(可以推断:对应的库也可能需要包含OSGeo4W的lib路径)。

解决

  在这里插入图片描述

  这里直接复制缺少的几个库到Qt的bin下(有可能没列全,请使用cmd自行尝试),也可以修改环境变量,但是笔者为了不影响整台电脑的其他环境,不添加系统环境变量。
  在这里插入图片描述


上一篇:《QGIS开发笔记(一):QGIS介绍、软件下载和加载shp地图数据Demo》
下一篇:敬请期待…


若该文为原创文章,转载请注明原文出处
本文章博客地址:https://hpzwl.blog.csdn.net/article/details/139136356

相关文章:

QGIS开发笔记(二):Windows安装版二次开发环境搭建(上):安装OSGeo4W运行依赖其Qt的基础环境Demo

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/139136356 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV…...

设计一套Kafka到RocketMQ的双写+双读技术方案,实现无缝迁移!

设计一套Kafka到RocketMQ的双写双读技术方案,实现无缝迁移! 1、背景2、方案3、具体逻辑 1、背景 假设你们公司本来线上的MQ用的主要是Kafka,现在要从Kafka迁移到RocketMQ去,那么这个迁移的过程应该怎么做呢?应该采用什…...

Mysql下Limit注入方法(此方法仅适用于5.0.0<mysql<5.6.6的版本)

SQL语句类似下面这样&#xff1a;&#xff08;此方法仅适用于5.0.0<mysql<5.6.6的版本&#xff09; SELECT field FROM table WHERE id > 0 ORDER BY id LIMIT &#xff08;注入点&#xff09; 问题的关键在于&#xff0c;语句中有 order by 关键字&#xff0c;mysql…...

Makefile学习笔记15|u-boot顶层Makefile01

Makefile学习笔记15|u-boot顶层Makefile01 希望看到这篇文章的朋友能在评论区留下宝贵的建议来让我们共同成长&#xff0c;谢谢。 这里是目录 版本号信息 # SPDX-License-Identifier: GPL-2.0VERSION 2024 PATCHLEVEL 01 SUBLEVEL EXTRAVERSION -rc4 NAME 这里定义了u-bo…...

C++笔记之Unix时间戳、UTC、TSN、系统时间戳、时区转换、local时间笔记

C++笔记之Unix时间戳、UTC、TSN、系统时间戳、时区转换、local时间笔记 ——2024-05-26 夜 code review! 参考博文 C++笔记之获取当前本地时间以及utc时间...

leetcode338-Counting Bits

题目 给你一个整数 n &#xff0c;对于 0 < i < n 中的每个 i &#xff0c;计算其二进制表示中 1 的个数 &#xff0c;返回一个长度为 n 1 的数组 ans 作为答案。 示例 1&#xff1a; 输入&#xff1a;n 2 输出&#xff1a;[0,1,1] 解释&#xff1a; 0 --> 0 1 --&…...

sql server怎么存储图片

sql server怎么存储图片 在SQL Server中&#xff0c;可以使用VARBINARY数据类型来存储图片。以下是一个简单的例子&#xff0c;展示了如何将图片存储到数据库中&#xff0c;并从数据库中检索出来。 首先&#xff0c;创建一个表来存储图片数据&#xff1a; CREATE TABLE Image…...

大模型提示词Prompt学习

引言 关于chatGPT的Prompt Engineer&#xff0c;大家肯定耳朵都听起茧了。但是它的来由&#xff1f;&#xff0c;怎么能用好&#xff1f;很多人可能并不觉得并不是一个问题&#xff0c;或者说认定是一个很快会过时的概念。但其实也不能说得非常清楚&#xff08;因为觉得没必要深…...

蓝桥杯python组备赛指南

文章目录 前言刷题网站idle操作常用标准库mathdatetime 常见Q&A 前言 最近结束了比赛&#xff0c;我对比赛的过程进行了详细的复盘&#xff0c;并计划撰写一篇文章。这篇文章旨在为准备参加蓝桥杯的学弟学妹们提供帮助&#xff0c;我希望我的文章和笔记能对你们有所裨益。…...

架构师系列-定时任务解决方案

定时任务概述 在很多应用中我们都是需要执行一些定时任务的&#xff0c;比如定时发送短信&#xff0c;定时统计数据&#xff0c;在实际使用中我们使用什么定时任务框架来实现我们的业务&#xff0c;定时任务使用中会遇到哪些坑&#xff0c;如何最大化的提高定时任务的性能。 我…...

新计划,不断变更!做自己,接受不美好!猪肝移植——早读(逆天打工人爬取热门微信文章解读)

时间不等人 引言Python 代码第一篇 做自己&#xff0c;没有很好也没关系第二篇结尾 引言 新计划&#xff1a; 早上一次性发几个视频不现实 所以更改一下 待后面有比较稳定的框架再优化 每天早上更新 早到8点 晚到10点 你刚刚好上班或者上课 然后偷瞄的看两眼 学习一下 补充知…...

【数据结构】二叉树-堆(上)

个人主页~ 二叉树-堆 一、树的概念及结构1、概念2、相关概念3、树的表示4、树的实际应用 二、二叉树的概念和结构1、概念2、特殊二叉树3、二叉树的性质4、二叉树的存储结构&#xff08;1&#xff09;顺序存储&#xff08;2&#xff09;链式存储 三、二叉树的顺序结构以及实现1、…...

【Spring Boot】在项目中使用Spring AI

Spring AI是Spring框架中用于集成和使用人工智能和机器学习功能的组件。它提供了一种简化的方式来与AI模型进行交互。下面是一个简单的示例&#xff0c;展示了如何在Spring Boot项目中使用Spring AI。 步骤 1: 添加依赖 首先&#xff0c;在pom.xml文件中添加Spring AI的依赖&…...

【java程序设计期末复习】chapter3 运算符、表达式和语句

运算符、表达式和语句 Java提供了丰富的运算符&#xff0c;如算术运算符、关系运算符、逻辑运算符、位运算符等。 Java语言中的绝大多数运算符和C语言相同&#xff0c;基本语句&#xff0c;如条件分支语句、循环语句等也和C语言类似&#xff0c;因此&#xff0c;本章就主要知识…...

【建议收藏】30个较难Python脚本,纯干货分享

本篇较难&#xff0c;建议优先学习上篇 &#xff1b;20个硬核Python脚本-CSDN博客 接上篇文章&#xff0c;对于Pyhon的学习&#xff0c;上篇学习的结束相信大家对于Pyhon有了一定的理解和经验&#xff0c;学习完上篇文章之后再研究研究剩下的30个脚本你将会有所成就&…...

01-05.Vue自定义过滤器

目录 前言过滤器的概念过滤器的基本使用给过滤器添加多个参数 前言 我们接着上一篇文章01-04.Vue的使用示例&#xff1a;列表功能 来讲。 下一篇文章 02-Vue实例的生命周期函数 过滤器的概念 概念&#xff1a;Vue.js 允许我们自定义过滤器&#xff0c;可被用作一些常见的文本…...

C++系列-static成员

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” 概念 声明为static的类成员称为类的静态成员&#xff0c;用static修饰的成员变量&#xff0c;称之为静态成员变量&#xff0c;用static修饰的成员函数&#xff0c;称之为静态成…...

Git | 创建和管理Pull Request总结

如是我闻&#xff1a; 在使用 GitHub 进行项目协作时&#xff0c;掌握如何创建、更新和合并&#xff08;squash&#xff09;pull request 是非常有帮助的。本文将详细介绍这些操作&#xff0c;帮助我们更好地管理项目代码&#xff0c;并解释每个操作的原因和解决的问题。 1. 什…...

电机控制系列模块解析(23)—— 同步机初始位置辨识

一、两个常见问题 为什么感应电机&#xff08;异步机&#xff09;不需要初始位置辨识&#xff1f;&#xff08;因此感应电机转子磁场在定子侧进行励磁&#xff0c;其初始位置可以始终人为定义为0&#xff09; 为什么同步磁阻电机需要初始位置辨识&#xff1f;&#xff08;因为…...

【数据库基础-mysql详解之索引的魅力(N叉树)】

索引的魅力目录 &#x1f308;索引的概念&#x1f308;使用场景&#x1f308;索引的使用&#x1f31e;&#x1f31e;&#x1f31e;查看MySQL中的默认索引&#x1f31e;&#x1f31e;&#x1f31e;创建索引&#x1f31e;&#x1f31e;&#x1f31e;删除索引 站在索引背后的那个男…...

MySQL JSON 类型操作:从入门到不踩坑

开场白 MySQL 5.7 加了 JSON 类型之后&#xff0c;很多人觉得终于可以在关系型数据库里存 JSON 了&#xff0c;不用再拆表了。但说实话&#xff0c;我一开始用 JSON 类型的时候也没少踩坑——查询语法记不住、索引不会建、JSON 路径表达式写错……后来用多了才发现&#xff0c…...

DeepSeek监控告警设置实战指南(告警失效率下降92%的7个关键开关)

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;DeepSeek监控告警设置的核心价值与落地挑战 在大模型推理服务规模化部署的背景下&#xff0c;DeepSeek系列模型&#xff08;如DeepSeek-V2、DeepSeek-Coder&#xff09;对资源稳定性、延迟敏感性及异常响应时效…...

人机协同闭环:AI 时代邮件安全 “人在回路” 防御体系研究

摘要 2026 年&#xff0c;生成式 AI 全面渗透网络钓鱼攻击链&#xff0c;攻击从批量群发转向精准定制、从静态模板转向动态逃逸&#xff0c;传统纯技术防护出现显著盲区。数据显示&#xff0c;AI 自动化鱼叉式钓鱼点击率达 54%&#xff0c;攻击从投放至全面入侵的窗口压缩至秒级…...

【ChatGPT故事化表达黄金法则】:20年AI内容专家亲授3步叙事框架,让提示词转化率提升300%

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ChatGPT故事化表达的底层认知革命 传统人机交互长期受限于指令式范式——用户需精确编码意图&#xff0c;系统则机械匹配关键词或规则。ChatGPT 的突破性不在于参数规模&#xff0c;而在于其将语言建模…...

量子机器学习单次分类:深度、噪声与电路设计的权衡

1. 量子机器学习单次分类&#xff1a;从理论到噪声现实的深度剖析量子机器学习&#xff08;QML&#xff09;这几年挺火的&#xff0c;但真把它从论文里的公式搬到实际的量子芯片上跑&#xff0c;你会发现理想和现实的差距比量子比特的相干时间衰减得还快。其中一个核心痛点&…...

如何利用Taotoken的多模型聚合能力为Agent应用选择最佳模型

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 如何利用Taotoken的多模型聚合能力为Agent应用选择最佳模型 应用场景类&#xff0c;假设你正在开发一个智能Agent应用&#xff0c;…...

Win11蓝屏修复了?实测UHUB V5.15到V5.16版本升级,虚拟摄像头设置避坑指南

Win11蓝屏修复实测&#xff1a;UHUB V5.15到V5.16版本升级全攻略与虚拟摄像头深度优化最近在调试一套无人直播系统时&#xff0c;发现不少同行还在被Win11蓝屏问题困扰。作为从XCMS时代就开始使用这套工具的老用户&#xff0c;我完整经历了从音视频不同步到驱动框架彻底重构的技…...

AI 伪造图像在电信诈骗攻防中的应用与治理研究 —— 以韩国诱捕诈骗快递员案为例

摘要 2026 年 5 月 22 日韩国首尔西部地方法院审理的投资类电信诈骗案件中&#xff0c;受害人在遭遇假冒分析师诱导、虚假证券 APP 欺诈并已损失 1200 万韩元后&#xff0c;面对诈骗团伙以 “提现手续费” 为名进一步索要 1990 万韩元现金的行为&#xff0c;利用 AI 生成伪造现…...

3分钟快速解锁:如何让你的索尼相机显示中文菜单?

3分钟快速解锁&#xff1a;如何让你的索尼相机显示中文菜单&#xff1f; 【免费下载链接】OpenMemories-Tweak Unlock your Sony cameras settings 项目地址: https://gitcode.com/gh_mirrors/op/OpenMemories-Tweak 还在为索尼相机只能显示英文或日文菜单而烦恼吗&…...

Java并发编程:ReentrantReadWriteLock读写锁

前言在Java并发编程中&#xff0c;锁机制是保证线程安全的重要手段。synchronized和ReentrantLock都是排他锁&#xff0c;同一时刻只允许一个线程访问共享资源。但在实际业务场景中&#xff0c;读操作往往远多于写操作&#xff0c;如果多个读线程之间也要互相等待&#xff0c;会…...