首页 > 解决方案 > Qt sqlite插件在哪里寻找扩展库

问题描述

我已在此线程中进行了适当的修改,以使 Qt sqlite 插件能够加载扩展。但是,当我运行时SELECT load_extension('spatialite_mod'),我现在收到错误The specified module could not be found

在 Windows Qt 安装中,我需要将spatialite_mod.dll文件放在哪里才能找到运行时?我已经尝试将它放在二进制目录中,但没有任何成功。

标签: qtsqliteqt5

解决方案


结果证明这是一个多部分的问题。

原始问题的答案是 Qt 在工作目录 ( QDir::currentPath()) 和 Windows PATH 中查找库。

第1部分:

在 Windows 上,该specified module could not be found错误还可能意味着未找到 mod_spatialite.dll 依赖项之一。就我而言,我忘记将这些依赖项移动到与 mod_spatialite.dll 相同的目录中。他们包括:

  • libgcc_s_dw2-1.dll
  • libstdc++-6.dll
  • libsqlite3-0.dll
  • libxml2-2.dll
  • zlib1.dll
  • libfreexl-1.dll
  • libgeos_c-1.dll
  • libgeos-3-5-0.dll
  • libiconv-2.dll
  • liblzma-5.cll
  • libproj-9.dll

第2部分:

libspatialite 附带的libgcc_s_dw2-1.dlllibstdc++-6.dll库不适用于 Windows 10。在此处此处阅读有关此内容的更多信息。他们会在加载时使程序崩溃。我的解决方法是从我在 C:\Qt\5.11.3\mingw53_32 的 Qt 安装中获取相同的库。


推荐阅读