2013-05-13 64 views
4

我正在尝试在x64中构建GDAL(1.9.2)。无法在x64中构建gdal

在说明中,我看到:

# 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 

找不到PATH,INCLUDE和LIB具体针对x64,或其他任何东西,我应该做...

我可以在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 

(打造64) - 它的工作。但只有当我从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中......

我无法弄清楚什么是错的...

回答

3

要使用nmake命令行进行构建,我必须从命令外壳运行该命令,该命令外壳具有设置为64位构建的适当变量。

这是我做过什么来设置64位建筑环境:

调用“C:\ Program Files文件(x86)的\微软的Visual Studio 10.0 \ VC \ vcvarsall。蝙蝠” AMD64

1

“我可以建立在W​​in32中。”

在Win64构建企图之前,您是否为Win32构建过?

如果是这样,请参加答辩名单 http://trac.osgeo.org/gdal/ticket/4636,底部:

只是要注意的其他任何人遇到的问题。我会尝试看看更多 到这个时候我可以..但与此同时,一个干净的版本不是 确实在做一个“干净的”,所以请确保你手动删除你的文件,如果你在64位版本之前做了32位版本的构建。

你也可以尝试简单地在不同的目录下再次提取源代码,以便拥有一个干净的树并尝试为Win64构建。

+0

我实际上注意到即使在不同的Win32版本(Debug/Release)之间也需要“干净”的问题。我已经运行了“clean” - 我有一个bat文件,它只是调用“start/b/wait nmake -f makefile.vc clean” - 我也用手删除了文件...似乎我必须告诉它某处否则它是x64。 – Thalia 2013-05-13 16:34:12

+0

请注意,我没有在目标机器和模块机器类型之间发生冲突 - 就像在该机器中 - 似乎_WIN64标记未设置或者完全忽略。 – Thalia 2013-05-13 16:38:34

+0

当你的机器可以帮助你追踪问题时,为什么更喜欢花时间手动分类呢?新鲜提取,让机器在Win64上工作,同时喝杯咖啡。 ;) – Solkar 2013-05-13 16:53:31

3

你应该先以某种方式明确这个线程在6名编辑你做的是,读者你的问题的重点改变不止一次,因为人们可以从revision history

看总之: 现在它只是一个批次VS IDE构建工作的问题;尝试从VS

EXPORTING导出生成文件不只是打开包装原单makefile.vc在编辑器窗口

,保存下!一个名字不同从包的“makefile.vc”中,并在批处理中使用。

+0

谢谢。我不知道我可以这么做 - 从VS导出一个makefile! VS makefile的唯一改进就是设置构建环境 - 如果我知道的话,我可以更快地理解这个问题。 (对我的文章进行编辑:我尝试使用VS来构建这个事实,它帮助我追踪了这个问题,并且我在帖子中添加了这些信息 - 并没有以任何方式改变问题或问题的范围。不意味着迷惑读者...恰恰相反,猜猜不成功。) – Thalia 2013-05-14 17:35:31

+0

很高兴工作。 – Solkar 2013-05-14 17:57:12

10

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

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

    如果您之前尝试构建GDAL(例如x86),请确保构建目录(C:\warmerda\bld\)和源目录与先前的构建尝试完全一致。如果不确定,请尝试在新目录中解压源文件。

  3. 开始VS2012 x64 Native Tools Command Prompt: 开始 - >所有程序 - >微软的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 
    

您可以从here让您MSVC_VER号。 GDAL将建成并安装到C:\warmerda\bld\

+0

也为我工作,谢谢你的明确指示。 – enriched 2014-10-17 03:30:58

+0

这三个答案的组合对我有效。正如@Thalia所评论的那样,我使用C:\ Program Files文件(x86)\ Microsoft Visual Studio 12.0 \ VC \ bin \ x86_amd64 \ vcvarsx86_amd64.bat“'将变量放在一起,因为之前必须清除构建目录x86安装以下@Solkar评论,最后@ rutsky指令作为魅力。 Rutsky的指示比gdal网页上的指示要清晰得多, – quimnuss 2015-07-17 08:00:47

+0

@quimnuss乐于帮忙!我添加了关于在构建之前清理构建/源目录的注释。如果你有东西要添加说明---随意编辑它们 – rutsky 2015-07-17 13:12:10