VS2022编译GDAL库报错: LINK : error LNK2001: 无法解析的外部符号 _OSRValidate _OGR_G_GetPointCount _OGRRegisterAll

简介: VS2022编译GDAL库报错: LINK : error LNK2001: 无法解析的外部符号 _OSRValidate _OGR_G_GetPointCount _OGRRegisterAll

场景复现

使用VS2022的Native Tools command prompt for 2022工具编译GDAL库时,报“ LINK : error LNK2001: 无法解析的外部符号 _OSRValidate _OGR_G_GetPointCount _OGRRegisterAll ....”错误 。该问题可能是由处理未修饰符号的AMD64 vc++编译器的更改引起的。

LINK : error LNK2001: 无法解析的外部符号 _OSRValidate

LINK : error LNK2001: 无法解析的外部符号 _OGR_G_GetPointCount

LINK : error LNK2001: 无法解析的外部符号 _OGRRegisterAll

LINK : error LNK2001: 无法解析的外部符号 _GDALSimpleImageWarp@36

LINK : error LNK2001: 无法解析的外部符号 _GDALReprojectImage@48

LINK : error LNK2001: 无法解析的外部符号 _GDALComputeMedianCutPCT@32

LINK : error LNK2001: 无法解析的外部符号 _GDALDitherRGB2PCT@28

LINK : error LNK2001: 无法解析的外部符号 _OCTNewCoordinateTransformation@8

gdal303.dll : fatal error LNK1120: 8 个无法解析的外部命令

NMAKE : fatal error U1077: ““D:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\bin\HostX64\x64\link.EXE””: 返回代码“0x460”

Stop.


解决方案

打开nmake.opt文件,找到SYM_PREFIX的定义。然后将SYM_PREFIX = _更改为SYM_PREFIX =

打开makefile.vc文件,找到BASE_INCLUDE的第一个定义

替换规则:用$(SYM_PREFIX)替换’_',然后删除@以及后面的数字

原始代码:


BASE_INCLUDE = /INCLUDE:_GDALSimpleImageWarp@36 \

/INCLUDE:_GDALReprojectImage@48 \

/INCLUDE:_GDALComputeMedianCutPCT@32 \

/INCLUDE:_GDALDitherRGB2PCT@28 \

/INCLUDE:_OCTNewCoordinateTransformation@8

!ELSE

BASE_INCLUDE = /INCLUDE:$(SYM_PREFIX)GDALSimpleImageWarp \

/INCLUDE:$(SYM_PREFIX)GDALReprojectImage \

/INCLUDE:$(SYM_PREFIX)GDALComputeMedianCutPCT \

/INCLUDE:$(SYM_PREFIX)GDALDitherRGB2PCT \

/INCLUDE:$(SYM_PREFIX)OCTNewCoordinateTransformation

!ENDIF


修改后的代码:


BASE_INCLUDE = /INCLUDE:$(SYM_PREFIX)GDALSimpleImageWarp \

/INCLUDE:$(SYM_PREFIX)GDALReprojectImage \

/INCLUDE:$(SYM_PREFIX)GDALComputeMedianCutPCT \

/INCLUDE:$(SYM_PREFIX)GDALDitherRGB2PCT \

/INCLUDE:$(SYM_PREFIX)OCTNewCoordinateTransformation

!ELSE

BASE_INCLUDE = /INCLUDE:$(SYM_PREFIX)GDALSimpleImageWarp \

/INCLUDE:$(SYM_PREFIX)GDALReprojectImage \

/INCLUDE:$(SYM_PREFIX)GDALComputeMedianCutPCT \

/INCLUDE:$(SYM_PREFIX)GDALDitherRGB2PCT \

/INCLUDE:$(SYM_PREFIX)OCTNewCoordinateTransformation

!ENDIF


对比图

修改完成后,再次执行命令,编译GDAL库

release版本输入

nmake /f makefile.vc
nmake /f makefile.vc devinstall

debug版输入

nmake /f makefile.vc DEBUG=1
nmake /f makefile.vc devinstall


目录
相关文章
|
SQL 数据库
SQL解析相关报错
SQL解析相关报错
253 5
|
自然语言处理 编译器 Linux
告别头文件,编译效率提升 42%!C++ Modules 实战解析 | 干货推荐
本文中,阿里云智能集团开发工程师李泽政以 Alinux 为操作环境,讲解模块相比传统头文件有哪些优势,并通过若干个例子,学习如何组织一个 C++ 模块工程并使用模块封装第三方库或是改造现有的项目。
1146 56
|
人工智能 前端开发 JavaScript
拿下奇怪的前端报错(一):报错信息是一个看不懂的数字数组Buffer(475) [Uint8Array],让AI大模型帮忙解析
本文介绍了前端开发中遇到的奇怪报错问题,特别是当错误信息不明确时的处理方法。作者分享了自己通过还原代码、试错等方式解决问题的经验,并以一个Vue3+TypeScript项目的构建失败为例,详细解析了如何从错误信息中定位问题,最终通过解读错误信息中的ASCII码找到了具体的错误文件。文章强调了基础知识的重要性,并鼓励读者遇到类似问题时不要慌张,耐心分析。
717 5
|
Java 编译器
解析用GraalVm编译的class文件
这篇文章介绍了如何使用`javap`工具反编译由GraalVM编译的`.class`文件,详细展示了`javap`的用法和输出内容,包括类声明、版本信息、访问标志、类层次结构、接口、字段、方法、属性以及常量池等信息。
274 0
解析用GraalVm编译的class文件
|
存储 缓存 网络协议
搭建dns服务常见报错--查看/etc/named.conf没有错误日志信息却显示出错(/etc/named.conf:49: missing ‘;‘ before ‘include‘)及dns介绍
搭建dns服务常见报错--查看/etc/named.conf没有错误日志信息却显示出错(/etc/named.conf:49: missing ‘;‘ before ‘include‘)及dns介绍
1011 0
【Azure 应用服务】App Service 配置 Application Settings 访问Storage Account得到 could not be resolved: '*.file.core.windows.net'的报错。没有解析成对应中国区 Storage Account地址 *.file.core.chinacloudapi.cn
【Azure 应用服务】App Service 配置 Application Settings 访问Storage Account得到 could not be resolved: '*.file.core.windows.net'的报错。没有解析成对应中国区 Storage Account地址 *.file.core.chinacloudapi.cn
296 0
|
Linux 数据处理
探索Linux下的readlink命令:解析符号链接的利器
`readlink`命令在Linux中用于揭示符号链接的指向,显示它们所链接的实际文件或目录的路径。它可以显示简洁的绝对路径(-f),处理循环链接(-e),或不加换行符输出(-n)。例如,查看`link.txt`指向:`readlink link.txt`;获取绝对路径:`readlink -f link.txt`。使用时要注意链接是否存在、权限问题和可能的循环链接。
|
算法 测试技术 C语言
深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
通过解析nghttp2库的源码和实现一个简单的HTTP/2客户端示例,本文详细介绍了HTTP/2的关键特性和nghttp2的核心实现。了解这些内容可以帮助开发者更好地理解HTTP/2协议,提高Web应用的性能和用户体验。对于实际开发中的应用,可以根据需要进一步优化和扩展代码,以满足具体需求。
1321 29
|
前端开发 数据安全/隐私保护 CDN
二次元聚合短视频解析去水印系统源码
二次元聚合短视频解析去水印系统源码
539 4

推荐镜像

更多
  • DNS