在Windows环境下用C扩展扩展PostgreSQL的PostGIS插件
问题解答
liblwgeom.h在PostGIS 3.3.2源码中的位置
liblwgeom.h直接存在于PostGIS 3.3.2源码的src/liblwgeom/目录下,并非编译后才生成——你找不到它大概率是因为没将该目录正确添加到Visual Studio的头文件搜索路径,或是下载的源码包不完整。
Windows环境编译PostGIS的指南与建议
1. 优先用预编译包(省去自行编译的繁琐)
直接下载对应PostgreSQL版本的PostGIS官方Windows预编译安装包,安装后在PostGIS的安装目录(通常是PostgreSQL/[版本号]/share/contrib/postgis-3.3/类路径)下,能找到include/liblwgeom文件夹,里面包含所有所需头文件(含liblwgeom.h),同时lib目录有编译好的库文件。直接把这些路径添加到你的VS项目依赖即可,无需自行编译PostGIS。
2. 若必须自行编译PostGIS的步骤
- 依赖准备:提前安装带开发文件(头文件+库)的PostgreSQL,以及GDAL、GEOS、PROJ这几个核心依赖。推荐用OSGeo4W套件安装,它会自动配置依赖的路径与环境变量。
- CMake生成VS项目:
- 解压PostGIS 3.3.2源码,在根目录新建
build文件夹 - 打开对应版本的Visual Studio开发者命令提示符(如VS2019 x64提示符),切换到
build目录 - 执行CMake命令配置项目(替换为你的实际路径):
cmake .. -G "Visual Studio 16 2019" -A x64 ^ -DCMAKE_INSTALL_PREFIX="C:/Program Files/PostgreSQL/14/postgis" ^ -DPG_CONFIG="C:/Program Files/PostgreSQL/14/bin/pg_config.exe" ^ -DGEOS_CONFIG="C:/OSGeo4W64/bin/geos-config.bat" ^ -DPROJ_INCLUDE_DIR="C:/OSGeo4W64/include" ^ -DPROJ_LIBRARY="C:/OSGeo4W64/lib/proj.lib" ^ -DGDAL_INCLUDE_DIR="C:/OSGeo4W64/include" ^ -DGDAL_LIBRARY="C:/OSGeo4W64/lib/gdal_i.lib" - 打开生成的
PostGIS.sln,编译INSTALL目标,完成后会将头文件、库文件安装到指定前缀目录。
- 解压PostGIS 3.3.2源码,在根目录新建
- 项目配置:把编译生成的PostGIS
include和lib目录添加到你的VS项目的头文件搜索路径与库链接路径,同时链接liblwgeom.lib、postgis.lib以及PostgreSQL的postgres.lib。
内容的提问来源于stack exchange,提问作者axel_ande
相关产品推荐
相关产品推荐

