c++,gdal,GCPs报错求解答!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++,gdal,GCPs报错求解答!相关的知识,希望对你有一定的参考价值。

int nGCPs = poDataset->GetGCPCount(); //获得控制点数目
const GDAL_GCP* pGCPs = poDataset->GetGCPs(); //获得GCP控制点,是一个字段
第二行poDataset报错 IntelliSense: "const GDAL_GCP *" 类型的值不能用于初始化 "const GDAL_GCP *" 类型的实体,怎么回事,代码应该没错啊
http://blog.csdn.net/lijie45655/article/details/6771524
http://www.gisempire.com/bbs/read-80187
我是看这两个网址写的,求大神解答!

参考技术A 你会读取shp文件吗?如果会的话,直接把shp文件的路径换成dxf的路径即可。记得需要添加环境变量GDAL_DATA,值为gdal的data目录路径。也可以使用CPLSetConfigOption这个函数进行设置。

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

以上是关于c++,gdal,GCPs报错求解答!的主要内容,如果未能解决你的问题,请参考以下文章

selenium 在eclipse中运行打开火狐浏览器报错求大神看一下

微信小程序,weixin,this.setData is not a function 报错求帮助

C++ 使用GDAL库遥感影像失败,求解

报错解决方法1:‘A GDAL API version must be specified.’

c语言背包问题,求高手解答

datastage lookup报错,求解