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

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 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


目录
相关文章
|
3月前
|
SQL 数据库
SQL解析相关报错
SQL解析相关报错
49 5
|
1月前
|
自然语言处理 编译器 Linux
|
21天前
|
数据采集 JavaScript API
网页解析库:BeautifulSoup与Cheerio的选择
网页解析库:BeautifulSoup与Cheerio的选择
|
1月前
|
自然语言处理 编译器 Linux
告别头文件,编译效率提升 42%!C++ Modules 实战解析 | 干货推荐
本文中,阿里云智能集团开发工程师李泽政以 Alinux 为操作环境,讲解模块相比传统头文件有哪些优势,并通过若干个例子,学习如何组织一个 C++ 模块工程并使用模块封装第三方库或是改造现有的项目。
|
25天前
|
存储 Go PHP
Go语言中的加解密利器:go-crypto库全解析
在软件开发中,数据安全和隐私保护至关重要。`go-crypto` 是一个专为 Golang 设计的加密解密工具库,支持 AES 和 RSA 等加密算法,帮助开发者轻松实现数据的加密和解密,保障数据传输和存储的安全性。本文将详细介绍 `go-crypto` 的安装、特性及应用实例。
63 0
|
2月前
|
人工智能 前端开发 JavaScript
拿下奇怪的前端报错(一):报错信息是一个看不懂的数字数组Buffer(475) [Uint8Array],让AI大模型帮忙解析
本文介绍了前端开发中遇到的奇怪报错问题,特别是当错误信息不明确时的处理方法。作者分享了自己通过还原代码、试错等方式解决问题的经验,并以一个Vue3+TypeScript项目的构建失败为例,详细解析了如何从错误信息中定位问题,最终通过解读错误信息中的ASCII码找到了具体的错误文件。文章强调了基础知识的重要性,并鼓励读者遇到类似问题时不要慌张,耐心分析。
|
2月前
|
SQL Oracle 关系型数据库
SQL整库导出语录:全面解析与高效执行策略
在数据库管理和维护过程中,整库导出是一项常见的需求,无论是为了备份、迁移还是数据分析,掌握如何高效、准确地导出整个数据库至关重要
|
2月前
|
Java 编译器
解析用GraalVm编译的class文件
这篇文章介绍了如何使用`javap`工具反编译由GraalVM编译的`.class`文件,详细展示了`javap`的用法和输出内容,包括类声明、版本信息、访问标志、类层次结构、接口、字段、方法、属性以及常量池等信息。
24 0
解析用GraalVm编译的class文件
|
2月前
|
前端开发 JavaScript
pyquery:一个灵活方便的 HTML 解析库
pyquery:一个灵活方便的 HTML 解析库
28 1
|
3月前
|
XML JSON 网络协议
超级好用的C++实用库之字节流解析器
超级好用的C++实用库之字节流解析器
41 3

推荐镜像

更多