VS2022编译GDAL库报错: LINK : error LNK2001: 无法解析的外部符号 _OSRValidate _OGR_G_GetPointCount _OGRRegisterAll
Posted 林夕07
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
以上是关于VS2022编译GDAL库报错: LINK : error LNK2001: 无法解析的外部符号 _OSRValidate _OGR_G_GetPointCount _OGRRegisterAll的主要内容,如果未能解决你的问题,请参考以下文章
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
使用nmake编译Gdal源代码(Win10+VS2022)
Couldn't load libPassword from loader:NDK开发中C文件编译成cpu的so类库时,找不到类库报错的原因之一