VS2022编译GDAL库报错: fatal error U1050: PROJ_INCLUDE should be defined. PROJ >= 6 is a required depende

简介: VS2022编译GDAL库报错: fatal error U1050: PROJ_INCLUDE should be defined. PROJ >= 6 is a required depende

场景复现

使用VS2022的Native Tools command prompt for 2022工具编译GDAL库时,报“ fatal error U1050: PROJ_INCLUDE should be defined. PROJ >= 6 is a required depende”错误,这个错误其实是因为缺少PROJ库或者你的PROJ库版本低于6.0导致的。

定位问题

我们可以根据这个错误提示信息,找到对应的代码

makefile.vc(6) : fatal error U1050: PROJ_INCLUDE should be defined.

PROJ >= 6 is a required dependency Stop.


在makefile.vc文件中,发现下面这段代码。这里会对是否有proj路径进行判断,没有则直接报错


!INCLUDE nmake.opt


!IF !DEFINED(PROJ_INCLUDE) !ERROR PROJ_INCLUDE should be defined. PROJ


= 6 is a required dependency !ENDIF


然后在当前路径下的nmake.opt文件中,通过搜索PROJ_INCLUDE,我们可以看到


# PROJ stuff (required dependency: PROJ >= 6)

#PROJ_INCLUDE = -Id:\install-proj\local\include

# Note: add shell32.lib is needed starting with PROJ 7.0 in some circumstances

# for static linking. See https://github.com/OSGeo/gdal/issues/2488

# And ole32.lib also since PROJ 7.1 (see https://github.com/OSGeo/gdal/issues/2743)

#PROJ_LIBRARY = d:\install-proj\local\lib\proj_6_0.lib shell32.lib ole32.lib


可以看到关于PROJ库的相关配置被注释掉了。

原来如此啊,成功找到这个问题的根源了。


解决方案

1、你可以通过降低GDAL库的版本,好像低版本的GDAL库不需要依赖PROJ库。

2、你需要编译PROJ库,但是PROJ库又需要SQLite3库,所以比较复杂,你也可以网上搜对应版本的懒人包,或者参考博文:PROJ 9.1.1源码下载编译(Win10+VS2022) 与SQLite3源码下载与编译(开发环境:Win10+VS2022)。

编译完成后,将对应的链接添加到对应的位置,并且把这段代码放开

# PROJ stuff (required dependency: PROJ >= 6)
PROJ_INCLUDE = -I D:\proj\include
# Note: add shell32.lib is needed starting with PROJ 7.0 in some circumstances
# for static linking. See https://github.com/OSGeo/gdal/issues/2488
# And ole32.lib also since PROJ 7.1 (see https://github.com/OSGeo/gdal/issues/2743)
PROJ_LIBRARY = D:\proj\lib\RelWithDebInfo\proj.lib shell32.lib ole32.lib


踩过的坑

需要注意PROJ_INCLUDE后面的-I千万不能删除。否则就会报如下错误。

cl: 命令行 warning D9024 :无法识别的源文件类型“D:\proj\include”,假定为对象文件 cl: 命令行

warning D9024 :无法识别的源文件类型“D:\proj\include”,假定为对象文件 cl: 命令行 warning

D9024 :无法识别的源文件类型“D:\proj\include”,假定为对象文件 cl: 命令行 warning D9024

:无法识别的源文件类型“D:\proj\include”,假定为对象文件 gdal_translate_bin.cpp LINK :

fatal error LNK1181: 无法打开输入文件“D:\proj\include.obj” NMAKE : fatal error

U1077: “cl”: 返回代码“0x2” Stop. NMAKE : fatal error U1077: ““D:\Program

Files\Microsoft Visual

Studio\2022\Community\VC\Tools\MSVC\14.32.31326\bin\HostX64\x64\nmake.EXE””:

返回代码“0x2” Stop.


目录
相关文章
|
编译器 开发工具 C++
Qt5.6.3+VS2013环境搭建教程(最后支持XP系统的Qt版本)
Qt5.6.3+VS2013环境搭建教程(最后支持XP系统的Qt版本)
2221 0
Qt5.6.3+VS2013环境搭建教程(最后支持XP系统的Qt版本)
|
API PHP C++
Windows下用vs2017编译和配置libcurl库(手把手教,适合新人)
Windows下用vs2017编译和配置libcurl库(手把手教,适合新人)
2517 0
|
安全 Go 数据库
Navicat-Cracker NavicatCrackerDlg.cpp:332 -3All patch solutions are 解决Navicat 162版本注册问题的方法与分析【详细步骤】
Navicat-Cracker NavicatCrackerDlg.cpp:332 -3All patch solutions are 解决Navicat 162版本注册问题的方法与分析【详细步骤】
1292 0
|
4月前
|
缓存 Ubuntu 编译器
从源码编译安装gdal3.6.2库的操作指南。
以上步骤概要了从源码编译安装GDAL库的基本流程,实际操作中可能会遇到各种配置上的问题。如果在编译或安装过程中遇到错误,通常需要根据终端输出的信息来判断问题所在,并根据需要安装缺失的依赖库,或是调整编译参数解决问题。
350 0
|
8月前
|
关系型数据库 Linux 数据库
PostgreSQL 入门指南:安装、配置与基本命令
本文从零开始,详细介绍如何在 Windows、Linux 和 macOS 上安装和配置 PostgreSQL,涵盖30+个实操代码示例。内容包括安装步骤、配置远程访问和用户权限、基础数据库操作命令(如创建表、插入和查询数据),以及常见问题的解决方案。通过学习,你将掌握 PostgreSQL 的基本使用方法,并为后续深入学习打下坚实基础。
9814 1
|
机器学习/深度学习 并行计算 PyTorch
从零开始下载torch+cu(无痛版)
这篇文章提供了一个详细的无痛版教程,指导如何从零开始下载并配置支持CUDA的PyTorch GPU版本,包括查看Cuda版本、在官网检索下载包名、下载指定的torch、torchvision、torchaudio库,并在深度学习环境中安装和测试是否成功。
从零开始下载torch+cu(无痛版)
|
编译器 数据处理 C++
Visual Studio配置并编译C++环境下GDAL库、SQLite环境与PROJ库的方法
Visual Studio配置并编译C++环境下GDAL库、SQLite环境与PROJ库的方法
920 1
|
传感器 编解码 算法
Sentinel-1的GRD和SLC数据的区别和联系
Sentinel-1的GRD和SLC数据的区别和联系
2206 1
使用Zint库生成一维码/条形码
使用Zint库生成一维码/条形码
|
编译器
VS2022编译GDAL库报错: LINK : error LNK2001: 无法解析的外部符号 _OSRValidate _OGR_G_GetPointCount _OGRRegisterAll
VS2022编译GDAL库报错: LINK : error LNK2001: 无法解析的外部符号 _OSRValidate _OGR_G_GetPointCount _OGRRegisterAll
811 0