You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用MinGW源码安装PostGIS扩展失败:无法加载postgis-3.dll

解决MinGW编译PostGIS后无法加载dll的问题

针对你遇到的PostGIS扩展可见但执行CREATE EXTENSION postgis;时提示dll找不到的问题,即便文件存在且ldd检查无缺失,可从以下几个方向排查:

  • 进程环境变量不匹配
    ldd是在当前shell环境下检查依赖,但PostgreSQL服务进程的PATH可能未包含MinGW的运行时库目录(如C:\mingw64\bin)。MinGW编译的postgis-3.dll依赖的libgcc_s_seh-1.dll、libstdc++-6.dll等运行时库,若不在PostgreSQL进程的PATH中,会导致加载失败。
    解决:将MinGW的bin目录添加到系统环境变量PATH中,重启PostgreSQL服务后重试。

  • 架构不匹配
    确认PostgreSQL与PostGIS使用的是同架构的MinGW编译(均为32位或均为64位)。若二者架构不一致,即便dll存在,Windows也会拒绝加载。
    解决:重新用相同架构的MinGW编译PostgreSQL或PostGIS,确保二者架构统一。

  • 延迟加载依赖未被检测
    ldd可能无法检测到延迟加载的动态依赖,此时可通过Process Monitor追踪加载过程:

    1. 启动Process Monitor,设置过滤条件为进程名postgres.exe;
    2. 执行CREATE EXTENSION postgis;;
    3. 查看日志中的NAME NOT FOUND条目,定位真正缺失的依赖模块。
  • 权限与路径问题
    PostgreSQL服务若以Local System账户运行,可能无权限访问用户桌面目录(你的dll路径在C:/Users/admin/Desktop/build/...)。另外,手动放置的dll可能未在PostgreSQL的扩展搜索路径内。
    解决:执行make install将PostGIS文件安装到PostgreSQL默认的lib和share/extension目录,或手动复制postgis-3.dll到PostgreSQL安装目录的lib文件夹,同时确保扩展控制文件路径正确。

  • 扩展控制文件错误
    检查postgis.control文件中的library字段是否指向正确路径,确认无拼写错误或路径分隔符问题(Windows下/和\均可,但需保持一致)。若控制文件路径错误,PostgreSQL会找错dll位置。

内容的提问来源于stack exchange,提问作者amerature_dev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 00:06:17