Сборка GDAL используя Visual C++ Express Edition 2008

Материал из GIS-Lab
Версия от 17:11, 24 июля 2012; Voltron (обсуждение | вклад) (Новая страница: «{{Статья|Опубликована|gdal-compile}} {{Аннотация|Как собрать GDAL самому в Windows.}} При написании эт…»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску
Эта страница опубликована в основном списке статей сайта
по адресу http://gis-lab.info/qa/gdal-compile.html


Как собрать GDAL самому в Windows.

При написании этой статьи были использованы рекомендации со страницы компиляции GDAL (с официального сайта GDAL).

Подготовка

Сначала необходимо выполнить первичную настройку сборочной среды. Этот процесс подробно описан в соответствующей статье.

Получение кода GDAL

Загрузите исходный код GDAL версии 1.6.1 http://download.osgeo.org/gdal/gdal161.zip или более свежий выпуск http://trac.osgeo.org/gdal/wiki/DownloadSource.

Распакуйте архив.

Сборка и установка

Запустите Visual Studio и выберите «File → Open → Project/Solution». Найдите в каталоге с распакованными исходными кодами GDAL файл makegdal80.vcproj и откройте его. Не предложение сконвертировать проект отвечаем утвердительно.

После импорта проекта, попробуйте щелкнуть правой кнопкой мыши на название проекта makegdal и выбрать «Build».

Если появится следующая ошибка, перейдите к примечанию 1.

1>------ Build started: Project: makegdal, Configuration: Debug Win32 ------
1>Performing Makefile project actions
1>Project : error PRJ0003 : Error spawning 'cmd.exe'.
1>Build log was saved at "file://c:\temp\gdal-compile\gdal-1.5.1\Debug\BuildLog.htm"
1>makegdal - 1 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

А если ошибка такая, то к примечанию 2:

1>LINK : fatal error LNK1104: cannot open file 'atlthunk.lib'
1>NMAKE : fatal error U1077: 'link' : return code '0x450'
1>Stop.
1>Project : error PRJ0019: A tool returned an error code from "Performing Makefile project actions"
1>Build log was saved at "file://c:\temp\gdal-compile\gdal-1.5.3\Debug\BuildLog.htm"
1>makegdal - 3 error(s), 1 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

Примечание 1

Откройте VCE, выберите «Tools → Options → Projects and Solutions → VC++ Directories». Убедитесь, что одно из значений для «Executable Files» указывает на папку Windows\System32. Если такой строчки нет, необходимо её добавить.

Vce-compile-01.gif

Примечание 2

Отредактируйте atlwin.h (C:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\atl\atlwin.h). В строке 1725 добавьте

int i;

после

BOOL SetChainEntry(DWORD dwChainID, CMessageMap* pObject, DWORD dwMsgMapID = 0)
{
// first search for an existing entry

Должно получиться:

BOOL SetChainEntry(DWORD dwChainID, CMessageMap* pObject, DWORD dwMsgMapID = 0)
{
int i;
// first search for an existing entry

Затем отредактируйте atlbase.h (c:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\atl\atlbase.h). Закомментируйте строки 287-293

//PVOID __stdcall __AllocStdCallThunk(VOID);
//VOID __stdcall __FreeStdCallThunk(PVOID);

//#define AllocStdCallThunk() __AllocStdCallThunk()
//#define FreeStdCallThunk(p) __FreeStdCallThunk(p)

//#pragma comment(lib, "atlthunk.lib")

И добавьте новый макрос сразу после закоментированных строк:

/* NEW MACROS */
#define AllocStdCallThunk() HeapAlloc(GetProcessHeap(),0,sizeof(_stdcallthunk))
#define FreeStdCallThunk(p) HeapFree(GetProcessHeap(), 0, p)

После выполнения действий, описанных в примечаниях, снова запустите процесс компиляции («Build»). Теперь операция должна выполниться успешно, при этом вывод будет приблизительно такой:

c:\DevTools\gdal\gdal-1.6.1\ogr\ogrsf_frmts>copy pgeo\drv_*.html "C:\warmerda\bld"\html
pgeo\drv_pgeo.html
Скопировано файлов:         1.
 cd ..\..
Build log was saved at "file://c:\DevTools\gdal\gdal-1.6.1\Debug\BuildLog.htm"
makegdal - 0 error(s), 3125 warning(s)
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

Чтобы скомпилированными файлами можно было пользоваться, переместите gdal16.dll из корневой папки с исходным кодом GDAL в папку apps, в которой после компиляции должны были появиться исполняемые файлы.

Проверить инструменты можно запустив и папки apps один из них, например так:

gdalinfo --version

Ссылки по теме