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

构建Qt 6.5.1 SQLite插件后调用SQLite3函数出现未定义引用求助

问题根源

你用VS2017生成的sqlite3.lib是MSVC工具链专属的库格式,和MinGW的GCC工具链完全不兼容——这就是调用SQLite函数时出现未定义引用的核心原因。MinGW需要的是.a或.dll.a格式的静态/导入库,而非MSVC的.lib。

解决步骤

1. 生成MinGW兼容的SQLite库

用MinGW自带的dlltool工具,从SQLite的sqlite3.def和sqlite3.dll生成兼容的导入库:

# 打开MinGW64的终端,切换到sqlite文件所在目录
dlltool -d sqlite3.def -l libsqlite3.a -D sqlite3.dll

执行后会得到libsqlite3.a,把它和sqlite3.dll、头文件放在同一个目录下(比如你的C:\libs\sqlite-amalgamation-3420000)。

2. 重新配置CMake编译Qt SQLite插件

确保打开的是Qt 6.5.1 MinGW64的终端,不要混用MSVC环境,然后执行以下配置命令(手动指定SQLite库路径,避免CMake误判):

qt-cmake -G Ninja C:\Qt\6.5.1\Src\qtbase\src\plugins\sqldrivers ^
-DCMAKE_INSTALL_PREFIX=C:\Qt\6.5.1\mingw_64 ^
-DCMAKE_INCLUDE_PATH=C:\libs\sqlite-amalgamation-3420000 ^
-DCMAKE_LIBRARY_PATH=C:\libs\sqlite-amalgamation-3420000 ^
-DFEATURE_system_sqlite=ON ^
-DSQLITE_LIBRARY=C:\libs\sqlite-amalgamation-3420000\libsqlite3.a ^
-DSQLITE_INCLUDE_DIR=C:\libs\sqlite-amalgamation-3420000

3. 重新编译安装插件

依次执行:

cmake --build .
cmake --install .

注意查看编译日志,确认CMake正确找到了SQLite的库和头文件,没有“找不到sqlite”相关的警告。

4. 项目中正确链接SQLite

  • 如果用QMake,在.pro文件中添加:
    LIBS += -lsqlite3
    
  • 如果用CMake,在CMakeLists.txt中添加:
    find_package(SQLite3 REQUIRED)
    target_link_libraries(你的项目名称 PRIVATE SQLite::SQLite3)
    
  • 运行时必须把sqlite3.dll放到项目的执行目录,或者加到系统PATH中。
额外排查点
  • 检查CMake配置阶段的输出,确认Found SQLite3: ...的路径指向你生成的libsqlite3.a
  • 确认项目编译时,链接器确实找到了libsqlite3.a,没有遗漏链接参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 19:22:26