我在按照以下指南编译gdal 1.11.0时遇到问题:http ://trac.osgeo.org/gdal/wiki/BuildingOnWindows
我可以运行,nmake /f makefile.vc MSVC_VER=1800 WIN64=YES
但是在安装时失败,并显示以下错误:
Creating library gdal_i.lib and object gdal_i.exp LINK : error LNK2001: unresolved external symbol _OGRFeatureStylePuller LINK : error LNK2001: unresolved external symbol _OSRValidate LINK : error LNK2001: unresolved external symbol _OPTGetProjectionMethods LINK : error LNK2001: unresolved external symbol _OGR_G_GetPointCount LINK : error LNK2001: unresolved external symbol _OGRRegisterAll LINK : error LNK2001: unresolved external symbol _GDALSimpleImageWarp@36 LINK : error LNK2001: unresolved external symbol _GDALReprojectImage@48 LINK : error LNK2001: unresolved external symbol _GDALComputeMedianCutPCT@32 LINK : error LNK2001: unresolved external symbol _GDALDitherRGB2PCT@28 LINK : error LNK2001: unresolved external symbol _OCTNewCoordinateTransformation @8 gdal111.dll : fatal error LNK1120: 10 unresolved externals NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 12.0 \VC\BIN\amd64\link.EXE"' : return code '0x460' Stop.
是我能做些什么还是从http://trac.osgeo.org/gdal/wiki/DownloadSource下载的源代码中有损坏的东西
波尔提供的答案不正确。我终于找到了解决此问题的方法:
在GDAL主文件夹下找到nmake.opt文件,将其打开并搜索“ SYM_PREFIX”的定义。然后将“ SYM_PREFIX = _”更改为“ SYM_PREFIX =”(删除下划线)。
在GDAL主文件夹下找到makefile.vc文件,将其打开并搜索“ BASE_INCLUDE”的第一个定义(另一个定义就在它的下面,请不要更改错误的定义)。从更改
BASE_INCLUDE = /INCLUDE:_GDALSimpleImageWarp@36 /
/INCLUDE:_GDALReprojectImage@48 /
/INCLUDE:_GDALComputeMedianCutPCT@32 /
/INCLUDE:_GDALDitherRGB2PCT@28 /
/INCLUDE:_OCTNewCoordinateTransformation@8 $(VB6_SAFEARRAYSYM)
为:
BASE_INCLUDE = /INCLUDE:$(SYM_PREFIX)GDALSimpleImageWarp /
/INCLUDE:$(SYM_PREFIX)GDALReprojectImage /
/INCLUDE:$(SYM_PREFIX)GDALComputeMedianCutPCT /
/INCLUDE:$(SYM_PREFIX)GDALDitherRGB2PCT /
/INCLUDE:$(SYM_PREFIX)OCTNewCoordinateTransformation $(VB6_SAFEARRAYSYM)
。简而言之,用$(SYM_PREFIX)替换'_',然后删除'@number'。
根据某些网页,此问题可能是由处理未修饰符号的AMD64 vc ++编译器的更改引起的。