在VisualStudio中部署GDAL库的C++版本(包括SQLite、PROJ等依赖)

转载 作者:来者不拒 更新时间:2024-02-02 09:47:03 24 4

  本文介绍在Visual Studio软件中配置、编译C++环境下GDAL库、SQLite环境与PROJ库的详细方法.

  GDAL库是一个非常方便的地理数据处理库,但其在C++环境下的配置与编译流程较为复杂;尤其是最新的GDAL 3及以上版本,其在C++环境中的配置更是首先需要满足许多其他的环境配置条件(包括SQLite环境、CMake软件与PROJ库),使得其配置变得更复杂一些。本文就详细介绍在Visual Studio软件中,配置GDAL库所需的环境,并最终配置、编译GDAL库的方法.

目录
  • 1 写在前面
  • 2 具体配置
    • 2.1 SQLite配置
    • 2.2 CMake配置
    • 2.3 PROJ配置
      • 2.3.1 方法一
      • 2.3.2 方法二
    • 2.4 GDAL配置
  • 3 配置测试

1 写在前面

  首先,本文是基于Visual Studio 2022软件进行的配置;其中,GDAL库版本为3.5.2,SQLite环境版本为3.39.4,PROJ库版本为9.1.0。此外,在配置过程中还需要用到跨平台编译工具CMake软件,其版本为3.24.2。如果大家安装的是以上库、环境或软件的其他版本,也可以参考本文,因为整体流程都是近似的;但可能部分操作的细节会稍微有一些差异.

  其次,在编译PROJ库时发现,可能是由于PROJ库最新的9.1.0版本的自身要求,只能编译Release版本的PROJ库;若编译Debug版本则会报错;而同时,SQLite环境、PROJ库与最终的GDAL库需要保持一致(即三者要么都是Release版本,要么都是Debug版本)。因此,本文最终选择了配置Release版本的GDAL库;但最终测试代码时发现,在Visual Studio软件中无论是Release模式还是Debug模式,都可以成功调用配置好的Release版本的GDAL库。所以,本文就主要介绍Release版本的GDAL库的配置方法,但也会在对应流程处注明如果想配置Debug版本的GDAL库,该如何设置.

2 具体配置

  配置GDAL库首先需要准备好PROJ库,而PROJ库的配置则需要准备好SQLite环境与CMake软件(这些似乎是GDAL 3及以上版本才需要的,网上很多GDAL 2版本的配置教程都没有这么麻烦的准备工作);因此我们首先逐一配置好上述这些额外需要的环境或软件.

2.1 SQLite配置

  首先,我们进行SQLite环境的配置。SQLite是一个由C语言撰写的数据库引擎,其为后续需要配置的PROJ库提供了数据支持,同时配置GDAL库也会用到这一环境.

  首先,我们进入SQLite的官方下载网站,并下载“Source Code”中的第一项sqlite-amalgamation-3390400,以及“Precompiled Binaries for Windows”中的第二项sqlite-dll-win64-x64-3390400与第三项sqlite-tools-win32-x86-3390400,一共是三个文件,如下图所示。这里需要注意,随着SQLite版本的更新,上述三个文件名称最后面的一长串数字会随着改变,大家只需要对照好文件名称前面的字样即可.

  随后,将上述下载好的三个压缩包文件解压到同一个文件夹下(下图是我在配置完SQLite环境之后截的图,因此文件夹的个数与名称和大家的会有一些差异).

  随后,打开Visual Studio软件,新建一个项目。我这里因为Visual Studio软件原本就是开着的,所以就可以选择“文件”→“新建”→“项目...”.

  随后,选择“空项目”,并选择“下一步”.

  配置好“项目名称”与“位置”。其中,“项目名称”我在这里配置为MySQLite,“位置”就选择刚刚我们解压缩三个文件的文件夹即可.

  随后,分别在“头文件”与“源文件”处右键,通过“添加”→“现有项...”的方法,将刚刚解压缩得到文件中的sqlite3.h与sqlite3ext.h文件放入“头文件”,并将sqlite3.c与sqlite3.def文件放入“源文件”.

  完成后如下图所示.

  接下来,选中项目名称MySQLite,并选择“属性”→“配置属性”→“常规”,选择“配置类型”,将其选择为静态库(.lib),并在上方的“配置”与“平台”中将二者选择为“所有配置”与“所有平台”.

  接下来,在“C/C++”→“预处理器”中,设置“预处理器定义”.

  在其中复制如下代码即可.

_USRDLL
SQLITE_ENABLE_RTREE
SQLITE_ENABLE_COLUMN_METADATA
SQLITE_ENABLE_FTS5
SQLITE_ENABLE_UNLOCK_NOTIFY

  复制后如下图所示.

  接下来,在“链接器”→“输入”中配置“模块定义文件”.

  找到刚刚解压缩得到的sqlite3.def文件,按下Shift按钮并右键,选择“复制文件地址”.