我正在尝试在x64中构建GDAL(1.9.2)。
在说明中,我看到:
# Uncomment the following if you are building for 64-bit windows
# (x64). You'll need to have PATH, INCLUDE and LIB set up for 64-bit
# compiles.
!IF "$(PLATFORM)" == "x64"
WIN64=YES
!ENDIF
然后降低
# Under win64, symbols for function names lack the underscore prefix
# present on win32. Also the STDCALL calling convention is not used.
!IFDEF WIN64
!UNDEF STDCALL
!ELSE
SYM_PREFIX=_
!ENDIF
找不到特定于x64的PATH,INCLUDE和LIB或我应该做的其他任何事情...
我可以在Win32中构建。
在x64中,出现链接器错误:
LINK : error LNK2001: unresolved external symbol _OGRFeatureStylePuller
LINK : error LNK2001: unresolved external symbol _OSRValidate
...
gdal19.dll : fatal error LNK1120: 74 unresolved externals
NMAKE : fatal error U1077: '"c:\Program Files (x86)\Microsoft Visual Studio
10.0\VC\BIN\link.EXE"' : return code '0x460'
我放(在Win32中构建)
!IFNDEF PLATFORM
PLATFORM=WIN32
!ENDIF
修改为
!IFNDEF PLATFORM
PLATFORM=x64
!ENDIF
(以x64构建)-并且有效。但是只有当我从Visual Studio内部构建时。
我希望能够使用bat文件(并构建alll平台/配置)
上面-在VS中构建时,不会从命令行构建
(使用命令:
start /b /wait nmake -f makefile.vc clean
start /b /wait nmake.exe /f makefile.vc PLATFORM=x64
start /b /wait nmake.exe /f makefile.vc devinstall PLATFORM=x64
完全相同的东西内置于Win32中...
我不知道怎么了...
最佳答案
我设法使用http://dominoc925.blogspot.ru/2013/03/build-64-bit-gdal-for-windows.html中的步骤在Visual Studio 2012下构建了x64版本的GDAL:
C:\tmp\gdal-1.9.2\
如果您以前尝试构建GDAL(例如x86),请确保构建目录(
C:\warmerda\bld\
)和源目录与先前的构建尝试无关。如果不确定,请尝试在新目录中解压缩源。 VS2012 x64 Native Tools Command Prompt
:开始->所有程序-> Microsoft Visual Studio 2012-> Visual Studio工具->
Open VS2012 x64 Native Tools Command Prompt
还是跑
%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat" amd64
)。 C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC>cd /D C:\tmp\gdal-1.9.2
D:\trn4\gdal-1.9.2>
nmake /f makefile.vc MSVC_VER=1700 WIN64=YES
nmake /f makefile.vc MSVC_VER=1700 WIN64=YES install
nmake /f makefile.vc MSVC_VER=1700 WIN64=YES devinstall
您可以从here获得您的MSVC_VER号码。 GDAL将被构建并安装到
C:\warmerda\bld\
。关于c++ - 无法在x64中建立Gdal,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16526181/