Не могу построить GDAL в x64

Я пытаюсь собрать GDAL (1.9.2) в x64.

В инструкции я вижу:

# 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

(для сборки в 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

Решение

Мне удалось построить x64-версию GDAL под Visual Studio 2012, используя шаги из http://dominoc925.blogspot.ru/2013/03/build-64-bit-gdal-for-windows.html:

  1. Загрузите gdal-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:
    Пуск -> Все программы -> 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\,

11

Другие решения

Для сборки с помощью командной строки nmake мне нужно было запустить команду из командной оболочки, в которой установлены соответствующие переменные для построения для 64 битов.

Вот что я сделал, чтобы настроить 64-битную среду сборки:

вызов «C: \ Program Files (x86) \ Microsoft Visual Studio 10.0 \ VC \ vcvarsall.bat» amd64

3

Сначала вы должны как-то прояснить читателям этой ветки, что за 6 внесенных вами изменений, фокус вашего вопроса менялся не раз, как видно из лист регистраций изменений

Тем не мение:
Теперь это просто проблема, связанная с идеей сборки; попробуйте экспортировать make-файл из VS

ЭКСПОРТ! НЕ просто открывайте оригинальный пакет makefile.vc в окне редактора!

, сохраните его под именем, отличным от «makefile.vc» пакета, и используйте его в своем пакете.

3

«Я могу встроить в Win32».

Вы собирались для Win32 ДО вашей попытки сборки Win64?

Если это так, пожалуйста, посетите
http://trac.osgeo.org/gdal/ticket/4636, нижняя часть списка ответов:

Просто отметить, что для кого-то еще есть проблема .. Я постараюсь посмотреть больше
в это, когда я могу .. но в то же время, чистая сборка не
действительно делает «чистый», поэтому убедитесь, что вы вручную удалите свои файлы, если
вы делаете 32-битную сборку перед вашей 64-битной сборкой.

Вы также можете попытаться просто извлечь исходный код снова в другой каталог, чтобы получить чистое дерево и попытаться создать его для Win64.

1