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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何利用线程池实现互联网验证码保护服务

如何利用线程池实现互联网验证码保护服务 1、业务背景与实现思路2、代码实操1、业务背景与实现思路 首先介绍一下业务背景,假设我们的系统是一个短视频播放网站,每个新加入的用户都需要注册账号并绑定手机号。为了验证用户手机的正确性,我们的系统会发送一条验证码到用户注…

上下文视觉提示实现zero-shot分割检测及多visual-prompt改造

文章目录 一、Closed-Set VS Open-set二、DINOv2.1 论文和代码2.2 内容2.3 安装部署2.4 使用效果 三、多visual prompt 改造3.1 获取示例图mask3.2 修改函数参数3.3 推理代码3.4 效果的提升! 四、总结 本文主要介绍visual prompt模型DINOv,该模型可输入八…

Linux基础(八):计算机基础概论

本篇博客简单介绍计算机的基础知识,为后续学习做个铺垫。 目录 一、计算机的基本组成 1.1 计算机组成五大部件 1.1.1 运算器(Arithmetic Logic Unit,ALU) 1.1.2控制器 (Control Unit,CU) …

【网络协议】应用层协议--HTTP

文章目录 一、HTTP是什么?二、HTTP协议工作过程三、HTTP协议1. fiddler2. Fiddler抓包的原理3. 代理服务器是什么?4. HTTP协议格式1.1 请求1.2 响应 四、认识HTTP的请求1.认识HTTP请求的方法2.认识请求头(header)3.认识URL3.1 URL是什么&…

uni-app实现页面之间的跳转传参(八)

界面之间的参数传递在 开发中经常会用到,这节主要将一下uni-app开发应用是的传参情况。如下图所示,我的一级界面将点检分成三类:日点检、周点检和年保养;在点击相应的会导航到相应的功能。 在uni-app中常用的方法有uni.navigateTo(OBJECT)、uni.redirectTo(OBJECT);简单的…

详解 Scala 的集合类型

一、集合简介 1. 类型 序列 Seq:类似于 Java 中的 List 接口集 Set:类似于 Java 中的 Set 接口映射 Map:类似于 Java 中的 Map 接口所有的集合都扩展自 Iterable 特质 2. 不可变集合 位于 scala.collection.immutable 包,指该集…

基于docxtpl的模板生成Word

docxtpl是一个用于生成Microsoft Word文档的模板引擎库。它结合了docx模块和Jinja2模板引擎,使用户能够使用Microsoft Word模板文件并在其中填充动态数据。这个库提供了一种方便的方式来生成个性化的Word文档,并支持条件语句、循环语句和变量等控制结构&…

Spring Boot集成testcontainers快速入门Demo

1.什么是testcontainers? Testcontainers 是一个用于创建临时 Docker 容器进行单元测试的 Java 库。当我们想要避免使用实际服务器进行测试时,它非常有用。,官网介绍称支持50多种组件。​ 应用场景 数据访问层集成测试: 使用My…

HTTP交互导致ECONNABORTED的原因之一

背景: 本次记录的,是一次使用HTTP交互过程中遇到的问题,问题不大,就是给题目上这个报错补充一种可能的解决方案。 程序大致流程: 1. 设备向服务器A请求信息 2. 拿到回复记录下回复内容中的数据包下载地址等信息 3…

2024GDCPC广东省赛记录

比赛流程体验,依托,开赛几分钟了,选手还卡在门外无法入场,也没给延时,说好的桌上会发三支笔,于是我们就没准备,要了三次笔,终于在一小时后拿到了😅 比赛题目体验&#xf…

PyTorch深度学习快速入门——P1-P13

环境配置 Anaconda,创建conda create -n pytorch python3.12,使用conda activate pytorch切换到环境。安装pytorch,conda install pytorch torchvision torchaudio pytorch-cuda11.8 -c pytorch -c nvidia,使用import torch&…

力扣496. 下一个更大元素 I

Problem: 496. 下一个更大元素 I 文章目录 题目描述思路复杂度Code 题目描述 思路 因为题目说nums1是nums2的子集,那么我们先把nums2中每个元素的下一个更大元素算出来存到一个映射里,然后再让nums1中的元素去查表即可 复杂度 时间复杂度: O ( n 1 n 2…

宁夏银川、山东济南、中国最厉害的改名大师的老师颜廷利教授的前沿思想观点

在当代社会,一个响亮的声音穿越了传统的迷雾,它来自东方哲学的殿堂,由一位现代学者颜廷利教授所发出。他的话语,如同一股清泉,在混沌的世界里激荡着思考的波澜:"有‘智’不在年高,无‘智’…

福昕PDF编辑器自定义快捷方式

你是否为用不惯福昕PDF编辑器自带的快捷键而发愁?今天,我和大家分享一下如何设置自己想要的快捷键方式,希望能对大家有帮助。 步骤一:打开福昕PDF编辑,并找到更多命令 步骤二:切换到键盘一栏,并…

Stream流常用操作

一、中间操作 中间操作是返回一个新的流,并在返回的流中包含所有之前的操作结果。它们总是延迟计算,这意味着它们只会在终止操作时执行,这样可以最大限度地优化资源使用。 1. filter(过滤) filter()方法接受一个谓词(一个返回boo…

栈和队列的基本见解

1.栈 1.1栈的基本概念和结构: 栈是一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出的原则。 压栈:栈的插入操作叫做进栈/压栈…

【java程序设计期末复习】chapter2 基本数据类型与数组

基本数据类型与数组 一,标识符和关键字 标识符 定义 用来标识类名、变量名、方法名、类型名、数组名、文件名的有效字符序列称为标识符,简单地说,标识符就是一个名字 。 性质 (1)标识符由字母、下划线、美元符号和…

cocos creator做圆形进度条

效果图: 我们在开发过程中经常要用到圆形进度条,例如技能CD 原文链接 之前写了一篇cocos2dx-lua_ProgressTimer创建扇形进度条,这里简单记录下在cocosCreator中如何制作。 具体方法 cocosCreator做起来比2dx还是要简单很多,首先给节点添加p…

PageHelper分页

文章目录 PageHelper分页ThreadLocalMap和ThreadLocal执行完PageHelper.startPage之后,分页参数存储到哪里了?Page和List的关系?PageInterceptor分页拦截器的作用?PageInfo的作用与结构?最后看下引入的pagehelper分页依…

Linux-部分:实用指令

1 指定运行级别 1)基本介绍: 运行级别说明: 0:关机1:单用户【找回丢失密码】2:多用户状态没有网络服务3:多用户状态有网络服务4:系统未使用保留给用户5:图形界面6&…