Сборка GDAL используя Visual C++ Express Edition 2008
по адресу 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. Если такой строчки нет, необходимо её добавить.
Примечание 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
Ссылки по теме
- Can I build GDAL with MS Visual C++ 2008 Express Edition?
- Подготовка к компиляции ПО ГИС используя Visual C++ Express Edition 2008 и компоненты OSGeo4W
- Сборка QGIS используя Visual C++ Express Edition 2008 и компоненты OSGeo4W
- Использование GDAL для перепроектировки данных на базе эллипсоида на сферу
- Использование GDAL для привязки растровых материалов