在Windows上编译GDAL 1.11.0时出现无法解析的外部符号

Pou*_*sen 2 c++ gdal

我在按照以下指南编译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.
Run Code Online (Sandbox Code Playgroud)

是我能做些什么还是从http://trac.osgeo.org/gdal/wiki/DownloadSource下载的源代码中有损坏的东西

Nev*_*ilk 5

波尔提供的答案不正确。我终于找到了解决此问题的方法:

  1. 在GDAL主文件夹下找到nmake.opt文件,将其打开并搜索“ SYM_PREFIX”的定义。然后将“ SYM_PREFIX = _”更改为“ SYM_PREFIX =”(删除下划线)。

  2. 在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 ++编译器的更改引起的。