Сборка GDAL 1.9.0 с использованием Visual Studio 2010: различия между версиями

Материал из GIS-Lab
Перейти к навигации Перейти к поиску
Строка 8: Строка 8:
# Краткая информация о структуре библиотеки GDAL
# Краткая информация о структуре библиотеки GDAL
# Сборка зависимых библиотек
# Сборка зависимых библиотек
# Сборка GDAL


===== 1. Краткая информация о структуре библиотеки GDAL =====
===== 1. Краткая информация о структуре библиотеки GDAL =====
Строка 60: Строка 61:
   source tree.  This file is included with zlib but CMake generates this file
   source tree.  This file is included with zlib but CMake generates this file
   for you automatically in the build directory.
   for you automatically in the build directory.
Здесь говорится, что нужно стереть файл ''C://project/zlib-1.2.6/zconf.h'' т.к. он сгенерил новый. После того как сотрете опять нажимайте Configure, процесс должен закончиться без ошибок, после запускайте Generate. Далее идем в папку build и открываем файл zlib.sln с помощью Visual Studio(далее VS), ставим Release. А так же заходим в меню в пункт Построение и выбираем диспетчер конфигураций, после этого снимаем галочки с examles и minizip они нам не понадобятся (Рис. 4), если же будут нужны, необходимо в свойствах этих проектов прописать путь к zlib.h.
Здесь говорится, что нужно стереть файл ''C://project/zlib-1.2.6/zconf.h'' т.к. он сгенерил новый. После того как сотрете опять нажимайте ''Configure'', процесс должен закончиться без ошибок, после запускайте ''Generate''. Далее идем в папку ''build'' и открываем файл ''zlib.sln'' с помощью Visual Studio(далее VS), ставим ''Release''. А так же заходим в меню в пункт Построение и выбираем диспетчер конфигураций, после этого снимаем галочки с ''examles'' и ''minizip'' они нам не понадобятся (Рис. 4), если же будут нужны, необходимо в свойствах этих проектов прописать путь к ''zlib.h''.
[[Файл:Рис. 4.JPG|center|Рис. 4]]
[[Файл:Рис. 4.JPG|center|Рис. 4]]
'''Рис. 4'''<br />
После всего этого компилируем проект и получаем 3 файла в папке ''C:/project/zlib-1.2.6/Debug/Release''. Перенесем их в папку ''C:/project/zlib-1.2.6/lib/Release'' для унификации, эту папку необходимо создать самим.<br />
После всего этого компилируем проект и получаем 3 файла в папке ''C:/project/zlib-1.2.6/Debug/Release''. Перенесем их в папку ''C:/project/zlib-1.2.6/lib/Release'' для унификации, эту папку необходимо создать самим.<br />


'''Далее соберем библиотеку geos'''. Качаем отсюда http://trac.osgeo.org/geos/ последнюю версию http://download.osgeo.org/geos/geos-3.3.2.tar.bz2 . Извлекаем в ''C:\project\geos-3.3.2'' . Делаем конфигурацию в CMake, после этого в разделе Ungrouped Entries убираем калочку с BUILD_TESTING (см. Рис. 5). Примечание, чтобы у вас появился раздел Ungrouped Entries, поставьте галки в Grouped и Advanced (см. Рис. 5).
'''Далее соберем библиотеку geos'''. Качаем отсюда http://trac.osgeo.org/geos/ последнюю версию http://download.osgeo.org/geos/geos-3.3.2.tar.bz2 . Извлекаем в ''C:\project\geos-3.3.2'' . Делаем конфигурацию в CMake, после этого в разделе Ungrouped Entries убираем калочку с BUILD_TESTING (см. Рис. 5). Примечание, чтобы у вас появился раздел Ungrouped Entries, поставьте галки в Grouped и Advanced (см. Рис. 5).
[[Файл:Рис. 5.JPG|center|Рис. 5]]
[[Файл:Рис. 5.JPG|center|Рис. 5]]
Далее нажимаем Generate и открываем в VS файл ''C:\project\geos-3.3.2\build\geos.sln'' , выставляем Release и компилируем. Если у вас возникла ошибка <br />
'''Рис. 5'''<br />
 
Далее нажимаем Generate и открываем в VS файл ''C:\project\geos-3.3.2\build\geos.sln'' , выставляем ''Release'' и компилируем. Если у вас возникла ошибка <br />
''Ошибка 1 error C2668: log: неоднозначный вызов перегруженной функции C:\project\geos-3.3.2\src\operation\buffer\BufferOp.cpp 97 1 geos-static''<br />
''Ошибка 1 error C2668: log: неоднозначный вызов перегруженной функции C:\project\geos-3.3.2\src\operation\buffer\BufferOp.cpp 97 1 geos-static''<br />
кликните по ней 2 раза мышкой и в открывшемся файле замените строчку<br />
кликните по ней 2 раза мышкой и в открывшемся файле замените строчку<br />
''int bufEnvPrecisionDigits = (int) (std::log(bufEnvMax) / std::log(10) + 1.0);''<br />
''int bufEnvPrecisionDigits = (int) (std::log(bufEnvMax) / std::log(10) + 1.0);''<br />     '''тут надо сделать шрифт как код'''
на<br />
на<br />
''int bufEnvPrecisionDigits = (int) (std::log(bufEnvMax) / std::log(10.0) + 1.0);''<br />
''int bufEnvPrecisionDigits = (int) (std::log(bufEnvMax) / std::log(10.0) + 1.0);''<br />       '''и тут'''
и скомпилируйте заново.<br />
и скомпилируйте заново.<br />
Далее если возникла ошибка <br />
Далее если возникла ошибка <br />
Строка 90: Строка 95:
И последнее расставляем галочки как на скриншоте, см. Рис. 6: <br />
И последнее расставляем галочки как на скриншоте, см. Рис. 6: <br />
[[Файл:Рис. 6.JPG|center|Рис. 6]]
[[Файл:Рис. 6.JPG|center|Рис. 6]]
После того как все будет сделано, нажимайте Configurate, все должно закончиться без ошибок и потом Generate. Далее открываем файл CURL.sln в папке build. Заходим в свойства проекта (для этого в Обозревателе решений надо выбрать libcurl)(Проект -> Свойства), далее Свойства конфигурации -> Компоновщик -> Ввод, далее в окне справа Дополнительные зависимости, нажимаем Изменить и удаляем <br />
'''Рис. 6'''<br />
 
После того как все будет сделано, нажимайте ''Configurate'', все должно закончиться без ошибок и потом ''Generate''. Далее открываем файл ''CURL.sln'' в папке ''build''. Заходим в свойства проекта (для этого в Обозревателе решений надо выбрать libcurl)(Проект -> Свойства), далее Свойства конфигурации -> Компоновщик -> Ввод, далее в окне справа Дополнительные зависимости, нажимаем Изменить и удаляем <br />
WSOCK32_LIBRARY-NOTFOUND<br />
WSOCK32_LIBRARY-NOTFOUND<br />
WS2_32_LIBRARY-NOTFOUND<br />
WS2_32_LIBRARY-NOTFOUND<br />
Строка 97: Строка 104:
'''Далее будем собирать ibjpeg'''  - брать здесь http://www.ijg.org/ последнюю версию http://www.ijg.org/files/jpegsr8d.zip .
'''Далее будем собирать ibjpeg'''  - брать здесь http://www.ijg.org/ последнюю версию http://www.ijg.org/files/jpegsr8d.zip .
CMakeLists скачиваем тут [[Файл:CMakeListsjpeg.zip]] и разархивируем, кладем в папку ''C:\project\jpeg-8d''.<br />
CMakeLists скачиваем тут [[Файл:CMakeListsjpeg.zip]] и разархивируем, кладем в папку ''C:\project\jpeg-8d''.<br />
Запускаем CMAke и делаем configurate, затем Generate. Идем в папку Debug, открываем libjpeg.sln, ставим Realese и компилируем. <br />
Запускаем CMAke и делаем ''configurate'', затем ''Generate''. Идем в папку ''Debug'', открываем ''libjpeg.sln'', ставим ''Realese'' и компилируем. <br />


'''Далее будем собирать libpng''' - брать здесь http://www.libpng.org/pub/png/libpng.html последнюю версию http://download.sourceforge.net/libpng/lpng159.zip . Разархивировать, запустить CMake, произвести конфигурацию. Прописываем пути для ZLIB_INCLUDE_DIR и ZLIB_LIBRARY-NOTFOUND как делали это выше.  Нажимаем Configurate и Generate, далее открываем libpng.sln, ставим Release и компилируем. Файлы из папки ''C:\project\lpng159\build\Release'' переносим в ''C:\project\lpng159\lib\Release''.<br />
'''Далее будем собирать libpng''' - брать здесь http://www.libpng.org/pub/png/libpng.html последнюю версию http://download.sourceforge.net/libpng/lpng159.zip . Разархивировать, запустить CMake, произвести конфигурацию. Прописываем пути для ZLIB_INCLUDE_DIR и ZLIB_LIBRARY-NOTFOUND как делали это выше.  Нажимаем Configurate и Generate, далее открываем libpng.sln, ставим Release и компилируем. Файлы из папки ''C:\project\lpng159\build\Release'' переносим в ''C:\project\lpng159\lib\Release''.<br />


'''Дальше собираем libtiff''' - брать здесь ftp://ftp.remotesensing.org/pub/libtiff последнюю версию ftp://ftp.remotesensing.org/pub/libtiff/tiff-4.0.1.zip , разархивируем ''C:\project\tiff-4.0.1'', качаем CMakeLists и еще пару файлов и разархивируем как обычно [[Файл:Tiff.zip]]. Запускаем CMakt, делаем Configurate и прописываем пути для ZLIB_INCLUDE_DIR и ZLIB_LIBRARY-NOTFOUND как делали это выше.  Нажимаем Configurate и Generate, далее открываем libtiff ставим Release и компилируем.<br />
'''Дальше собираем libtiff''' - брать здесь ftp://ftp.remotesensing.org/pub/libtiff последнюю версию ftp://ftp.remotesensing.org/pub/libtiff/tiff-4.0.1.zip , разархивируем ''C:\project\tiff-4.0.1'', качаем CMakeLists и еще пару файлов и разархивируем как обычно [[Файл:Tiff.zip]]. Запускаем CMakt, делаем ''Configurate'' и прописываем пути для ZLIB_INCLUDE_DIR и ZLIB_LIBRARY-NOTFOUND как делали это выше.  Нажимаем ''Configurate'' и ''Generate'', далее открываем ''libtiff.sln'' ставим ''Release'' и компилируем.<br />


'''Последняя из этих библиотек proj''' - брать здесь http://trac.osgeo.org/proj/ последнюю версию http://download.osgeo.org/proj/proj-4.8.0.zip . Разархивируем, кидаем туда этот фаил [[Файл:CMakeListsproj.zip]], запускаем CMake, прописываем пути до proj, жмем Configurate и Generate, открываем proj4, ставим Release и компилируем.
'''Последняя из этих библиотек proj''' - брать здесь http://trac.osgeo.org/proj/ последнюю версию http://download.osgeo.org/proj/proj-4.8.0.zip . Разархивируем, кидаем туда этот фаил [[Файл:CMakeListsproj.zip]], запускаем CMake, прописываем пути до proj, жмем ''Configurate'' и ''Generate'', открываем ''proj4.sln'', ставим ''Release'' и компилируем.
На этом вся подготовка закончена, у нас есть все необходимые библиотеки.<br />


На этом вся подготовка закончена, у нас есть все необходимые библиотеки.
===== 3. Сборка GDAL =====
Приступаем к сборке самого '''GDAL'''.<br />
Приступаем к сборке самого '''GDAL'''.<br />
Скачиваем отсюда http://trac.osgeo.org/gdal/wiki/DownloadSource последнюю версию gdal 1.9.0 ( http://download.osgeo.org/gdal/gdal190.zip ). Качаем архив [[Файл:Gdal_trank.zip]] . Разархивируем gdal в папку project, в разархивированную папку gdal разархивируем файлы из архива Gdal_trank.zip : папку cmake и файл CMakeLists.<br />
Скачиваем отсюда http://trac.osgeo.org/gdal/wiki/DownloadSource последнюю версию gdal 1.9.0 ( http://download.osgeo.org/gdal/gdal190.zip ). Качаем архив [[Файл:Gdal_trank.zip]] . Разархивируем gdal в папку project, в разархивированную папку gdal разархивируем файлы из архива Gdal_trank.zip : папку cmake и файл CMakeLists.<br />

Версия от 19:18, 4 апреля 2012

Эта страница является черновиком статьи.


Сборка библиотеки GDAL 1.9.0 с использованием Visual Studio 2010

В мире все развивается и это касается так же программного обеспечения, а именно выходят новые версии библиотек и новые версии программ для разработки. Поэтому в данной статье речь пойдет о сборке библиотеки GDAL 1.9.0 на Visual Studio 2010.

Оглавление
  1. Краткая информация о структуре библиотеки GDAL
  2. Сборка зависимых библиотек
  3. Сборка GDAL
1. Краткая информация о структуре библиотеки GDAL

Библиотека GDAL состоит из 3-х частей:

  1. CPL - базовые функции работы с файловой системой, строками, xml и т.п.
  2. OGR - работа с векторными форматами. Список форматов: http://www.gdal.org/ogr/ogr_formats.html
  3. GDAL - работа с растровыми форматами. Список форматов: http://www.gdal.org/formats_list.html

OGR и GDAL обеспечивают не только поддержку форматов, но и операции работы с векторами и растрами. Т.е. GDAL позволяет не только считывать но и манипулировать с геоданными.

Теперь про зависимости. Компонент CPL (исходники лежат в подпапке port) зависит от библиотек: zlib, curl.
OGR зависит от многих библиотек, но базовый набор от expat, geos и proj.
GDAL зависит от tiff, jpeg, png.

Тут надо понимать что такое драйвер. Это отдельный плагин обеспечивающий поддержку формата из списка. В таблице http://www.gdal.org/formats_list.html можно посмотреть что от чего зависит. Иногда драйвер не зависит ни от чего и компилировать его просто. Иногда нужна еще отдельная библиотека или набор библиотек.

Коротко о сборке. В зависимости от необходимости можно собрать GDAL именно в той конфигурации, что нужна (с определенным перечнем драйверов).
Собирать будем пошагово: вначале все зависимые библиотеки, затем сам GDAL. Для простоты предлагаю делать это все с использованием системы сборки CMake.
Суть в том что для большинства библиотек разработаны скрипты CMake и сборка становится однотипной и простой. Заодно на выходе будут привычные проекты Visual Studio, где можно залезть в свойсnва и посмотреть, что и как.

===== 2. Сборка зависимых библиотек =====
Первой библиотекой будем компилировать expat.
Первое: скачиваем систему сборки cmake http://www.cmake.org/files/v2.8/cmake-2.8.7-win32-x86.exe и ставим ее.
Второе: берем файл отсюда http://sourceforge.net/projects/expat/files/expat/2.0.1/ под названием expat-2.0.1.tar.gz - это последняя стабильная версия на 20.03.2012 и распаковываем в папку где у нас будут храниться все проекты для сборки библиотек, например сюда C:\project\expat-2.0.1\. Обратите внимание, что эта и все последующие папки должны быть разархивированы так, что в конечной папке, в данном случае expat-2.0.1, должны лежать различные папки и файлы (см. Рис. 1), а не вложенная папка expat-2.0.1(для данного примера).

Рис. 1

Рис. 1

Третье: скачиваем фаил CMakeLists.txt Файл:CMakeLists.zip и помещаем в разархивированную папку expat-2.0.1.

Далее запускаем CMake и указываем два пути: Where is the source code - это то, куда вы разархивировали expat, например C:/project/expat-2.0.1 и Where to build the binaries – это та папка, куда сгенерируются файлы проекта C:/project/expat-2.0.1/build. Нажимаем кнопку Configure и выбираем версию Visual Studio(в нашем случае Visual Studio 2010), если выдаст ошибку, нажимаем еще раз. После нажимаем кнопку Generate (см. Рис. 2).

Рис. 2

Рис. 2
В папке build должен появиться фаил libexpat.sln. Открываем его с помощью Visual Studio, выставляем сверху Тип сборки Release вместо Debug (см Рис. 3) и компилируем проект(нажимаем F7).

Рис. 3

Рис. 3

После этого в папке C:/projects/expat-2.0.1/lib/Release (далее все скомпилированные библиотеки будем класть в схожие папки lib/Release) должны появиться следующие файлы libexpat.dll
libexpat.exp
libexpat.lib

Это мы скомпилировали так называему shared dll. Есть еще Static dll - тогда на выходе только libexpat.lib. Потом libexpat.dll надо будет скопировать в папку с вашей программой. Туда надо будет кидать все зависимые библиотеки.

Далее делаем тоже самое для zlib, качаем ее отсюда http://zlib.net/zlib126.zip CmakeLists.txt в архив уже включена. Разархивируем C:\project\zlib-1.2.6
При нажатии на кнопку Configure в самом конце cmake напишет следующее сообщение: CMake Error at CMakeLists.txt:65 (message):

 You must remove C:/project/zlib-1.2.6/zconf.h from the
 source tree.  This file is included with zlib but CMake generates this file
 for you automatically in the build directory.

Здесь говорится, что нужно стереть файл C://project/zlib-1.2.6/zconf.h т.к. он сгенерил новый. После того как сотрете опять нажимайте Configure, процесс должен закончиться без ошибок, после запускайте Generate. Далее идем в папку build и открываем файл zlib.sln с помощью Visual Studio(далее VS), ставим Release. А так же заходим в меню в пункт Построение и выбираем диспетчер конфигураций, после этого снимаем галочки с examles и minizip они нам не понадобятся (Рис. 4), если же будут нужны, необходимо в свойствах этих проектов прописать путь к zlib.h.

Рис. 4

Рис. 4

После всего этого компилируем проект и получаем 3 файла в папке C:/project/zlib-1.2.6/Debug/Release. Перенесем их в папку C:/project/zlib-1.2.6/lib/Release для унификации, эту папку необходимо создать самим.

Далее соберем библиотеку geos. Качаем отсюда http://trac.osgeo.org/geos/ последнюю версию http://download.osgeo.org/geos/geos-3.3.2.tar.bz2 . Извлекаем в C:\project\geos-3.3.2 . Делаем конфигурацию в CMake, после этого в разделе Ungrouped Entries убираем калочку с BUILD_TESTING (см. Рис. 5). Примечание, чтобы у вас появился раздел Ungrouped Entries, поставьте галки в Grouped и Advanced (см. Рис. 5).

Рис. 5

Рис. 5

Далее нажимаем Generate и открываем в VS файл C:\project\geos-3.3.2\build\geos.sln , выставляем Release и компилируем. Если у вас возникла ошибка
Ошибка 1 error C2668: log: неоднозначный вызов перегруженной функции C:\project\geos-3.3.2\src\operation\buffer\BufferOp.cpp 97 1 geos-static
кликните по ней 2 раза мышкой и в открывшемся файле замените строчку
int bufEnvPrecisionDigits = (int) (std::log(bufEnvMax) / std::log(10) + 1.0);
тут надо сделать шрифт как код на
int bufEnvPrecisionDigits = (int) (std::log(bufEnvMax) / std::log(10.0) + 1.0);
и тут и скомпилируйте заново.
Далее если возникла ошибка
Ошибка 1 error C2039: toupper: не является членом "std" C:\project\geos-3.3.2\tests\unit\capi\GEOSisValidDetailTest.cpp 60 1 geos_unit
кликните по ней 2 раза мышкой и в открывшемся файле сверху припишите #include <ctype.h>, а вместо
str[i] = std::toupper(str[i]);
напишите
str[i] = toupper(str[i]);
и скомпилируйте еще раз. После того как все закончится успешно скопируйте файлы из папки C:\project\geos-3.3.2\build\lib\Release в папку C:\project\geos-3.3.2\lib\Release.

Далее соберем curl. Качаем отсюда http://curl.haxx.se/download.html последнюю версию http://curl.haxx.se/download/curl-7.24.0.zip и разархивируем в C:\project\curl-7.24.0. Идем в CMake, указываем пути и нажимаем Configurate. Далее прописываем в
WSOCK32_LIBRARY - WSOCK32.lib
WS2_32_LIBRARY - WS2_32.lib
в ZLIB_INCLUDE_DIR прописываем два пути через точку запятую:
C:\project\zlib-1.2.6;C:\project\zlib-1.2.6\build
в ZLIB_LIBRARY прописываем путь до zlib.lib
C:\project\zlib-1.2.6\lib\Release\zlib.lib
И последнее расставляем галочки как на скриншоте, см. Рис. 6:

Рис. 6

Рис. 6

После того как все будет сделано, нажимайте Configurate, все должно закончиться без ошибок и потом Generate. Далее открываем файл CURL.sln в папке build. Заходим в свойства проекта (для этого в Обозревателе решений надо выбрать libcurl)(Проект -> Свойства), далее Свойства конфигурации -> Компоновщик -> Ввод, далее в окне справа Дополнительные зависимости, нажимаем Изменить и удаляем
WSOCK32_LIBRARY-NOTFOUND
WS2_32_LIBRARY-NOTFOUND
Нажимаем применить и ОК, далее компилируем проект. После успешной компиляции помещаем файлы из папки C:\project\curl-7.24.0\build\lib\Debug в папку C:\project\curl-7.24.0\lib\Realese

Далее будем собирать ibjpeg - брать здесь http://www.ijg.org/ последнюю версию http://www.ijg.org/files/jpegsr8d.zip . CMakeLists скачиваем тут Файл:CMakeListsjpeg.zip и разархивируем, кладем в папку C:\project\jpeg-8d.
Запускаем CMAke и делаем configurate, затем Generate. Идем в папку Debug, открываем libjpeg.sln, ставим Realese и компилируем.

Далее будем собирать libpng - брать здесь http://www.libpng.org/pub/png/libpng.html последнюю версию http://download.sourceforge.net/libpng/lpng159.zip . Разархивировать, запустить CMake, произвести конфигурацию. Прописываем пути для ZLIB_INCLUDE_DIR и ZLIB_LIBRARY-NOTFOUND как делали это выше. Нажимаем Configurate и Generate, далее открываем libpng.sln, ставим Release и компилируем. Файлы из папки C:\project\lpng159\build\Release переносим в C:\project\lpng159\lib\Release.

Дальше собираем libtiff - брать здесь ftp://ftp.remotesensing.org/pub/libtiff последнюю версию ftp://ftp.remotesensing.org/pub/libtiff/tiff-4.0.1.zip , разархивируем C:\project\tiff-4.0.1, качаем CMakeLists и еще пару файлов и разархивируем как обычно Файл:Tiff.zip. Запускаем CMakt, делаем Configurate и прописываем пути для ZLIB_INCLUDE_DIR и ZLIB_LIBRARY-NOTFOUND как делали это выше. Нажимаем Configurate и Generate, далее открываем libtiff.sln ставим Release и компилируем.

Последняя из этих библиотек proj - брать здесь http://trac.osgeo.org/proj/ последнюю версию http://download.osgeo.org/proj/proj-4.8.0.zip . Разархивируем, кидаем туда этот фаил Файл:CMakeListsproj.zip, запускаем CMake, прописываем пути до proj, жмем Configurate и Generate, открываем proj4.sln, ставим Release и компилируем. На этом вся подготовка закончена, у нас есть все необходимые библиотеки.

3. Сборка GDAL

Приступаем к сборке самого GDAL.
Скачиваем отсюда http://trac.osgeo.org/gdal/wiki/DownloadSource последнюю версию gdal 1.9.0 ( http://download.osgeo.org/gdal/gdal190.zip ). Качаем архив Файл:Gdal trank.zip . Разархивируем gdal в папку project, в разархивированную папку gdal разархивируем файлы из архива Gdal_trank.zip : папку cmake и файл CMakeLists.
Запускаем CMake и как обычно прописываем 2 пути, C:\project\gdal-1.9.0 и C:\project\gdal-1.9.0\build, нажимаем Configure. Когда выскочит ошибка, прописываем пути до zlib: C:\project\zlib-1.2.6;C:\project\zlib-1.2.6\build и C:/project/zlib-1.2.6/lib/Release/zlib.lib в директориях соответственно ZLIB_INCLUDE_DIR и ZLIB_LIBRARY. Далее все пути надо будет прописывать примерно аналогично для директории INCLUDE и LIBRARY. Нажимаем Configure, получаем ошибку и прописываем пути для CURL C:/project/curl-7.24.0/include и C:/project/curl-7.24.0/lib/Release/libcurl_imp.lib. Нажимаем Configure, получаем ошибку и прописываем пути для EXPAT: C:/project/expat-2.0.1/lib/ и C:/project/expat-2.0.1/lib/Release/libexpat.lib. Нажимаем Configure, получаем ошибку и прописываем пути для GEOS: C:\project\geos-3.3.2\include и C:/project/geos-3.3.2/lib/Release/geos_c.lib. Нажимаем Configure, получаем ошибку и прописываем пути для PROJ: C:\project\proj-4.8.0\src и C:/project/proj-4.8.0/lib/Release/proj4.lib. Нажимаем Configure, получаем ошибку, идем в OGR и убираем галочку с OGR_PG. Нажимаем Configure, получаем ошибку и прописываем пути для JPEG: C:\project\jpeg-8d;C:\project\jpeg-8d\build и C:/project/jpeg-8d/lib/Release/libjpeg.lib. Нажимаем Configure, получаем ошибку и прописываем пути для TIFF: C:\project\tiff-4.0.1\libtiff;C:\project\tiff-4.0.1\build и C:\project\tiff-4.0.1\lib\Release\libtiff.lib. Нажимаем Configure, получаем ошибку и прописываем пути для PNG, тут внимательно! Первая строчка - пути до LIBRARY: C:/project/lpng159/lib/Release/libpng15.lib и C:\project\lpng159;C:\project\lpng159\build. Нажимаем Configure, все должно закончиться успешно, нажимаем Generate. Далее идем в папку C:\project\gdal-1.9.0\build и открываем файл gdallib.sln с помощью visual studio. Ставим Release и компилируем. Если все прошло без ошибок, вы собрали GDAL! Поздравляю! Теперь можно попробовать сделать тестовый пример для проверки работоспособности c 'njq nchfybws http://www.gdal.org/gdal_tutorial_ru.html . Создадим консольный проект C++ CLR. Пропишем следующие пути:
выбираем в меню Проект->Свойства...->Свойства конфигурации->Компоновщик->Ввод На этой странице в дополнительных зависимостях прописать C:\project\gdal-1.9.0\build\Release\gdal19.lib
теперь в Проект->Свойства...->Свойства конфигурации->C/C++ в Дополнительные зависимости включаемых файлов прописать
C:\project\gdal-1.9.0\build\port
C:\project\gdal-1.9.0\alg
C:\project\gdal-1.9.0\
C:\project\gdal-1.9.0\gcore
C:\project\gdal-1.9.0\port

Так же необходимо в папку, где содержатся файлы проекта положить сформированные dll, собрынные нами ранее вместе с файлами .lib:
gdal19.dll
geos.dll
geos_c.dll
libcurl.dll
libexpat.dll
libjpeg.dll
libpng15.dll
libtiff.dll
proj4.dll
zlib1.dll

Так же в эту папку положите какой-нибудь рисунок и напишите его имя вместо моего, у меня это 1.JPG. Так выглядит мой код:

  1. include "stdafx.h"
  2. include "gdal_priv.h"

using namespace System; int main(array<System::String ^> ^args) {

   GDALDataset  *poDataset;
   GDALAllRegister();
   poDataset = (GDALDataset *) GDALOpen( "1.JPG", GA_ReadOnly ); // здесь надо заменить имя рисунка

if( poDataset == NULL )

   {
      return 0;
   }

double adfGeoTransform[6];

   printf( "Драйвер: %s/%s\n",
           poDataset->GetDriver()->GetDescription(), 
           poDataset->GetDriver()->GetMetadataItem( GDAL_DMD_LONGNAME ) );
   printf( "Размер %dx%dx%d\n", 
           poDataset->GetRasterXSize(), poDataset->GetRasterYSize(),
           poDataset->GetRasterCount() );
   if( poDataset->GetProjectionRef()  != NULL )
       printf( "Проекция \"%s\"\n", poDataset->GetProjectionRef() );
   if( poDataset->GetGeoTransform( adfGeoTransform ) == CE_None )
   {
       printf( "Начало координат (%.6f,%.6f)\n",
               adfGeoTransform[0], adfGeoTransform[3] );
       printf( "Размер пиксела (%.6f,%.6f)\n",
               adfGeoTransform[1], adfGeoTransform[5] );
   }
   return 0;

}

Ну вот и все. На этом данная статья заканчивается. В ней Вы научились собирать GDAL и сделали тестовый пример для работы с ним. Успехов. Комментарии и отзывы приветствуются.

Огромное СПАСИБО за помощь со сборкой и терпение пользователю Bishop.


Текст статьи Пример кода программы/html и т.п. 2. Второй раздел Текст статьи Еще один пример текста программы с сохранением переносов Таблица Заголовок Заголовок Заголовок текст текст текст

Ссылки по теме • Ссылка на дополнительный источник информации внутренняя • Ссылка на дополнительный источник информации внешняя Дата создания: 04.07.2010 Автор(ы): Боровенский Евгений(LEXX413), Дмитрий(Bishop)