VS2015 环境下对gdal2.0.1进行64bit编译
出现如下错误
正在创建库 gdal_i.lib 和对象 gdal_i.exp
INK : error LNK2001: 无法解析的外部符号 OGRFeatureStylePuller
INK : error LNK2001: 无法解析的外部符号 OSRValidate
INK : error LNK2001: 无法解析的外部符号 OPTGetProjectionMethods
INK : error LNK2001: 无法解析的外部符号 OGR_G_GetPointCount
INK : error LNK2001: 无法解析的外部符号 OGRRegisterAll
INK : error LNK2001: 无法解析的外部符号 GDALSimpleImageWarp
INK : error LNK2001: 无法解析的外部符号 GDALReprojectImage
INK : error LNK2001: 无法解析的外部符号 GDALComputeMedianCutPCT
INK : error LNK2001: 无法解析的外部符号 GDALDitherRGB2PCT
INK : error LNK2001: 无法解析的外部符号 OCTNewCoordinateTransformation
dal19.dll : fatal error LNK1120: 10 个无法解析的外部命令
MAKE : fatal error U1077: “f:\VS2010\VC\BIN\link.EXE”: 返回代码“0x460
这是由于x64设置不当引起的,解决方法是使用VS2015 x64 本机命令提示符工具,如下:同时,需要修改nmake.opt大概第一百行左右中的,Win64 = yes
又出现新错误
odbccp32.lib(dllload.obj) : error LNK2019: 无法解析的外部符号 _vsnwprintf_s,该 符号在函数 StringCchPrintfW 中被引用
将gdal-2.0.1/make.opt中作如下修改:
!IFDEF ODBC_SUPPORTED
!IF $(MSVC_VER) >= 1900
ODBCLIB = legacy_stdio_definitions.lib odbc32.lib odbccp32.lib user32.lib
!ELSE
ODBCLIB = odbc32.lib odbccp32.lib user32.lib
!ENDIF
!ENDIF
仍然不行
那么说明odbccp32.lib文件没有被找到,而egacy_stdio_definitions.lib先被找到了,因此,寻找egacy_stdio_definitions.lib所在目录C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib\amd64。然后,寻找odbc32.lib odbccp32.lib所在目录C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\x64,将这两个lib文件复制粘贴到egacy_stdio_definitions.lib所在目录。即可。
然而也不行,进过查找发现电脑中没有odbccp32.lib文件