5

我正在尝试在 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 文件(并构建所有平台/配置)以上 - 虽然它在 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

4 回答 4

11

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

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

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

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

  4. 将目录更改为具有解压 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>
    
  5. 使用开发文件构建 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
    

您可以从这里获取您的 MSVC_VER 号码。GDAL 将被构建并安装到C:\warmerda\bld\.

于 2014-07-22T16:19:23.760 回答
3

要使用 nmake 命令行构建,我必须从命令 shell 运行命令,该命令 shell 设置了适当的变量来构建 64 位。

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

调用“C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat”amd64

于 2013-05-13T19:34:44.767 回答
3

您应该首先以某种方式向该线程的读者说明,在您完成的 6 次编辑中,您的问题的焦点不止一次发生了变化,从修订历史中可以看出

无论如何:现在这只是一个批处理与 ide 构建作业的问题;尝试从 VS 导出 makefile

出口!不仅仅是在编辑器窗口中打开包原始 makefile.vc!

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

于 2013-05-14T07:24:31.697 回答
1

“我可以在 Win32 中构建。”

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

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

只是要注意其他有问题的人..我会尽可能多地研究这个..但与此同时,干净的构建并没有真正做到“干净”,所以请确保你手动删除你的文件,如果您在 64 位构建之前进行 32 位构建。

您也可以尝试简单地在不同的目录中再次提取源代码,以获得干净的树并尝试在那里为 Win64 构建。

于 2013-05-13T16:20:08.130 回答