GIS-LAB

Географические информационные системы и дистанционное зондирование

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

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

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

1. Скачиваем Visual C++ 9.0 Express Edition

Устанавливаем в папку: C:\Program Files\Microsoft Visual Studio 9.0\VC\

2. Скачиваем и устанавливаем Windows SDK

Установка в папку: c:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\

Веб-инсталлятор SDK
Полная версия (ISO, 409 Mb)

Более новую версию SDK - Windows SDK for Windows Server 2008 and .NET Framework 3.5, устанавливать не рекомендуется. Дальнейшее описание касается только Windows Server® 2003 R2 Platform SDK

3. Добавим пути в настройки VCE.

Tools\Options\Projects and Solutions\VC++ Directories

Executable files:
c:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Bin

Include files:
c:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include
c:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\atl
c:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Include\mfc

Library files:
c:\Program Files\Microsoft Platform SDK for Windows Server 2003 R2\Lib\

4. Скачайте исходный код GDAL версии 1.6.1
http://download.osgeo.org/gdal/gdal161.zip

или более свежий выпуск
http://trac.osgeo.org/gdal/wiki/DownloadSource

распакуйте его.

5. Найдите файл makegdal80.vcproj в каталоге куда был скачан и распакован исходный код.

6. Откройте этот файл в среде VCE (File\Open\Project/Solution), появится сообщение о том, что файл создан в предыдущей версии VC, нужно импортировать его в текущую.

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

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

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 ==========

Если ошибка такая, к пункту 9:

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 ========== 

8. Откройте VCE, Tools\Options\Projects and Solutions\VC++ Directories

Убедитесь, что одно из значений для Executable Files указывает на папку Windows\System32, если оно не указывается, необходимо его добавить.

9. Отредактируйте 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

10. Отредактируйте 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)

11. Снова запустите процесс компиляции (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 ==========

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

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

gdalinfo --version

Обсудить в форуме Комментариев — 0

Последнее обновление: September 11 2009

Вход

Рассылка новостей

Новое на форумеRSS

Обратная связь

captcha


(Геокруг)

Если Вы обнаружили на сайте ошибку, выберите фрагмент текста и нажмите Ctrl+Enter