GDAL源码编译及接口测试demo

源码下载

1 网上下载gdal源码文件

官网下载https://trac.osgeo.org/gdal/wiki/DownloadSource

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

 

我们下载的文件有

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

 

Geos的下载页

https://trac.osgeo.org/geos

我们下载的geos

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

 

PROJ4 下载

Proj4下载页

https://github.com/OSGeo/PROJ

选择下载zip文件

SWIG 下载

用于C#语言编译的swig下载页

https://sourceforge.net/projects/swig/files/swigwin/swigwin-4.0.1/

我们下载的3.01版本  4.01版本在编译c#源码时会如下错误,建议使用3.01版本的swig来编译其他平台使用GDAL版本

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

 

为了继承postgis和oracle的插件,找到oracle的OCI.DLL和libpq.dll,根据编译的32位和64位的不同,我们需要32位的dll和64位的dll,这两个动态库都可以在各自的安装包中找到。为了兼容10.2.2版本的数据库管理系统项目,使用了32位的dll

编译环境

当前编译环境 

Win10+Vs2019+geos-3.8.1.tar.bz2+PROJ-master.zip(7.0.1)+ swig-4.0.1.tar.gz

Geos 与proj4编译

Geos的编译

将压缩文件解压到“E:\gdalcompile\geos-3.8.1\geos-3.8.1”尽量不要设置中文路径,路径不要包含空格。

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

 

管理员权限打开cmd

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

 

 

cmd转到geos的目录下:

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

 

 

 

我们需要在编译32位的geos

 

编译平台选择Win32 X86

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

 

对于cmake不同平台的选择

https://cmake.org/cmake/help/git-stage/generator/Visual%20Studio%2016%202019.html

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

 

Visual Studio error C2001:常量中有换行符(解决办法)

将文件编码进行一个手动(如记事本)转换,改成UTF-8-BOM格式,可以使用NOTEPAD来修改文本文件

编译proj4

命令行编译proj4

使用命令行编译出的文件一直是X64位的文件,故后来使用的CmakeGUI来编译

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

 

 

https://www.sqlite.org/download.html  sqllite官网,可以直接下载X86的dll版本

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

 

 

 

 

 

 

使用cmakegui编译Proj4

重新编译Proj4  使用cmakeGUI来编译

 

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

GDAL 3.1.0的编译

 

为了调试,我们编译debug版本的

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

切换到vcvars32的编译环境

 

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

编译debug版本加入 DEBUG=1;

编译出错,

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

 

修改pg的位置

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

 

清理编译产生的临时文件

 

nmake -f makefile.vc clean

清理之后再次编译

 

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

 

再次清理掉

 

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

新增环境变量

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

 

编译完成  后输出nmake   -f   makefile.vc   debug=1    devinclude

 

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

 

Vs2019版本升级到1926后会出现没有识别的标识符错误

可以在Runtime-error 需要包含头文件 #include <stdexception>

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

 

 

下面我们继续编译net版本的gdal,并带有调试信息的

 

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

nmake /f makefile.vc interface

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

 

用swig4.0以上的版本编辑会报这个错误

现在改用swig 3.0来编辑

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

 

 

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

VS2019下GDAL3.1.0版本Net编译 x86 32位(二)

 

 

debug的使用

如果需要调试的话,将相关pdb文件copy到bin目录下

如果需要编译release版本,同理

 

相关文章:

  • 2022-01-13
  • 2021-12-19
  • 2021-10-30
  • 2022-01-04
  • 2021-10-21
  • 2021-09-12
  • 2022-12-23
猜你喜欢
  • 2022-01-21
  • 2021-10-13
  • 2021-09-27
  • 2021-04-13
  • 2022-12-23
  • 2021-05-09
  • 2021-09-23
相关资源
相似解决方案