1:解决QT 程序异常结束,如果你是使用了第三方库(GDAL OPENCV)+2:MINGW如何编译GDAL

1: 解决QT 程序异常结束,如果你是使用了第三方库GDAL or OPENCV

1.1 错误解释

可能会给你提供一种思路,因为这个错误,浪费了我不少的时间,网上找的各种解决方法都对我们的项目无效,由此我记录下我的解决方法吧。放上错误原图:1:解决QT 程序异常结束,如果你是使用了第三方库(GDAL OPENCV)+2:MINGW如何编译GDAL
首先说下原因吧,由于我们的项目用到了 GDAL,IDE使用的是QT(mingw),这就需要自己用mingw重新编译GDAL了。编译好之后的GDAL在导入项目之后,重构项目,一运行就出现这种错误,(先说好我的库路径是完全没有问题,库是导入成功且能识别的),这时我就怀疑是由于我使用了msys2(mingw 64)编译的GDAL ,在使用编译好之后的GDAL需要依赖一些dll文件,所以我就查看了*debug*下的exe文件,运行它果然提示缺失dll文件。
ps:我同时使用了GDAL(MINGW)32 和GDAL(MINGW)64 构建的程序,提示缺失的文件如下
1:解决QT 程序异常结束,如果你是使用了第三方库(GDAL OPENCV)+2:MINGW如何编译GDAL

1.2 解决方法

(如果你使用了msys2(mingw 64)编译的GDAL)
ps:msys2(mingw 32)编译的GDAL解决方法和这个一样 ,QT中导入GDAL路径方法 QT(MINGW)配置GDAL

--------------前提你电脑安装了QT和Msys2-----------------------
-------------(如何安装参考 软件安装 部分)--------------------
(1) 将你的msys2 下的mingw64\bin 添加到path环境变量
同时QT的两个mingw bin也添加到path环境变量

1:解决QT 程序异常结束,如果你是使用了第三方库(GDAL OPENCV)+2:MINGW如何编译GDAL
(2) 将程序缺失的dll文件进行补充: D:\msys64\mingw64\bin 下的这几个dll 复制到
1:解决QT 程序异常结束,如果你是使用了第三方库(GDAL OPENCV)+2:MINGW如何编译GDAL
D:\Qt5.12.2\Tools\mingw730_64\bin 里面
(3) 重启电脑 使环境变量生效
(4) 打开QT 重构项目 完美运行 不再报错

2: 完整的QT[mingw]使用GDAL教程,由于网上这方面的的资料很少......所以特意附上如何编译mingw-gdal 以及QT中如何配置GDAL

2.1 软件安装

从头说起 先说说mingw如何编译GDAL的吧!

2.1 在编译GDAL(mingw)之前你需要安装QT 以及 msys2(它是包含mingw32 和mingw 64的)

2.1.1 QT安装按正常步骤在安装界面选填mingw部分即可
安装完之后 必须把QT的mingw 配置到path环境变量
1:解决QT 程序异常结束,如果你是使用了第三方库(GDAL OPENCV)+2:MINGW如何编译GDAL

2.1.2 msys2安装

(1)步骤1:下载安装msys2 msys2 下载地址
1:解决QT 程序异常结束,如果你是使用了第三方库(GDAL OPENCV)+2:MINGW如何编译GDAL
(2)步骤2:使用国内的源
1:解决QT 程序异常结束,如果你是使用了第三方库(GDAL OPENCV)+2:MINGW如何编译GDAL
(3) 更新msys2的库
1:解决QT 程序异常结束,如果你是使用了第三方库(GDAL OPENCV)+2:MINGW如何编译GDAL
1:解决QT 程序异常结束,如果你是使用了第三方库(GDAL OPENCV)+2:MINGW如何编译GDAL
(4) 查看可用的gcc安装包 并安装。以下内容有选择安装(由于我GDAL32 位和64位都需要编译,所以我把msys2的mingw32 和 mingw64都安装了),这是我先前都安装过了,就不在操作了。
例如命令行使用 :pacman -S mingw-w64-x86_64-gcc
进行一个一个安装吧
1:解决QT 程序异常结束,如果你是使用了第三方库(GDAL OPENCV)+2:MINGW如何编译GDAL
(5) 安装mingw 64 并查看 GCC安装情况
1:解决QT 程序异常结束,如果你是使用了第三方库(GDAL OPENCV)+2:MINGW如何编译GDAL
(6) 配置环境变量
1:解决QT 程序异常结束,如果你是使用了第三方库(GDAL OPENCV)+2:MINGW如何编译GDAL
(7) 重启 查看 gcc
1:解决QT 程序异常结束,如果你是使用了第三方库(GDAL OPENCV)+2:MINGW如何编译GDAL

2.2 以mingw编译GDAL1.11.5为例子

(这一步可略过 因为这些path环境变量在前面已经配置过了 但是我要解释下)
在安装完所有软件之后,需要添加环境变量:在path下添加以下变量 (如果你想编译MINGW64位的GDAL) 就直接添加蓝线标出的部分,PS:编译GDAL不同位数只能填写 红 or 蓝其中一项 ,例如编译mingw32GDAL 只填写32位变量,如果都填写 会出现编译冲突,编译GDAL不成功现象,。。。这是我后来测试QT项目 两个都写上了 哭
1:解决QT 程序异常结束,如果你是使用了第三方库(GDAL OPENCV)+2:MINGW如何编译GDAL
(1)下载GDALGDAL1.11.5,解压
1:解决QT 程序异常结束,如果你是使用了第三方库(GDAL OPENCV)+2:MINGW如何编译GDAL
(2)打开msys2 mingw64 shell
1:解决QT 程序异常结束,如果你是使用了第三方库(GDAL OPENCV)+2:MINGW如何编译GDAL
(3)进入gdal解压目录
1:解决QT 程序异常结束,如果你是使用了第三方库(GDAL OPENCV)+2:MINGW如何编译GDAL
(4)./configure -prefix=/g/GDAL1115(该参数指定第6步中的安装路径),这个 " ."是要有的,嘿嘿,后面的 -prefix…什么我没加
(5)make
如果在链接时出现找不到“/g/gdal-1.11.5/frmts/o/.libs/EnvisatFile.o”的错误,打开GNUmakefile文件修 改 6-12 行,用 . (英文句点)替换这几行中的“$(GDAL_ROOT)”,再执行make。也可以在执行make之前先对GNUmakefile文件进行上述修改后,再 执行make。这里的错误,我没遇到,没有修改gunMakefile,可能是新版本号的
(6)make install
完成安装之后可以在 安装文件目录下查看到
1:解决QT 程序异常结束,如果你是使用了第三方库(GDAL OPENCV)+2:MINGW如何编译GDAL
1:解决QT 程序异常结束,如果你是使用了第三方库(GDAL OPENCV)+2:MINGW如何编译GDAL
红线部分这个证明你编译成功了,没有缺失文件。

哈哈哈,为了积分, 附上我编译好之后的GDAL下载地址吧
GDAL-MINGW64位
GDAL-MINGW32位

ps:编译过程中可能遇到的error展示,如果软件 和环境 都配置好 不会出现错误的
错误1:
1:解决QT 程序异常结束,如果你是使用了第三方库(GDAL OPENCV)+2:MINGW如何编译GDAL
错误2:
1:解决QT 程序异常结束,如果你是使用了第三方库(GDAL OPENCV)+2:MINGW如何编译GDAL

错误3:
1:解决QT 程序异常结束,如果你是使用了第三方库(GDAL OPENCV)+2:MINGW如何编译GDAL
查看这篇博客 可以解决
编译生成动态库 静态库问题

2.3 QT中配置GDAL

这个参考我的这篇博客 很方便
QT(mingw)中配置GDAL

终于完成了 ,下面就可以 写QT gdal 程序了