无法在x64中构建gdal

时间:2013-05-13 15:50:38

标签: c++ build gdal

我正在尝试在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中构建完全相同的东西......

我无法弄清楚出了什么问题......

4 个答案:

答案 0 :(得分:11)

我设法使用http://dominoc925.blogspot.ru/2013/03/build-64-bit-gdal-for-windows.html中的步骤在Visual Studio 2012下构建x64版本的GDAL:

  1. http://download.osgeo.org/gdal/
  2. 下载gdal-1.9.2.tar.gz(或其他版本的来源)
  3. 解压缩到某个目录,例如C:\tmp\gdal-1.9.2\

    如果您之前尝试构建GDAL(例如x86),请确保构建目录(C:\warmerda\bld\)和源目录在之前的构建尝试中是干净的。如果不确定,请尝试在新目录中解压缩源。

  4. 开始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)。

  5. 使用解压缩的GDAL源将目录更改为目录:

    C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC>cd /D C:\tmp\gdal-1.9.2
    
    D:\trn4\gdal-1.9.2>
    
  6. 使用开发文件构建GDAL:

    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
    
  7. 您可以从here获取MSVC_VER号码。 GDAL将构建并安装到C:\warmerda\bld\

答案 1 :(得分:3)

要使用nmake命令行构建,我必须从命令shell运行命令,该命令shell将相应的变量设置为64位构建。

这就是我设置64位构建环境所做的:

call" C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ VC \ vcvarsall.bat" AMD64

答案 2 :(得分:3)

首先,您应该以某种方式告诉读者这个帖子,在您完成的6次编辑中,您的问题的焦点不止一次发生变化,正如revision history

所见

反正: 现在它只是一个批量vs ide构建工作问题;尝试从VS

导出makefile

<强>导出!不只是在编辑器窗口中打开包原始makefile.vc!

,将其保存在与包“makefile.vc”不同的名称下,并在批处理中使用。

答案 3 :(得分:1)

“我可以在Win32中构建。”

在Win64构建尝试之前,您是否为Win32构建过?

如果是的话,请参加 http://trac.osgeo.org/gdal/ticket/4636,回复列表的底部:

  

请注意其他人有问题..我会试着看看更多   在我可以的时候进入这个......但与此同时,干净的构建不是   真的做“干净”,所以请确保手动删除你的文件,如果   你在64位构建之前做了32位构建。

您还可以尝试在不同的目录中再次提取源代码,以便拥有一个干净的树并尝试在那里为Win64构建。