Windows下编译C++程序遇sqlite3.h缺失及链接错误求助
解决Windows下C++链接SQLite的未定义引用问题
你遇到的undefined reference错误是链接阶段缺少SQLite库文件导致的,头文件问题已经解决,现在需要把SQLite的实现代码或库文件和你的程序链接起来。针对Windows+MinGW环境(从错误里的collect2.exe判断你用的是MinGW的gcc),给你两种简单可行的方案:
方案一:直接编译SQLite源码(最适合新手)
- 从SQLite官网下载sqlite-amalgamation包(包含合并后的sqlite3.c和sqlite3.h源码文件)
- 把下载的
sqlite3.c和sqlite3.h放到你的cpp代码同目录 - 编译时把sqlite3.c一起加入编译命令:
这样gcc会把SQLite的源码和你的代码一起编译链接,彻底解决未定义引用问题。g++ temp.cpp sqlite3.c -o temp.exe
方案二:链接预编译库
- 下载对应Windows版本的SQLite预编译二进制包(比如
sqlite-dll-win64-x64.zip,根据你的系统位数选择),里面包含sqlite3.dll和libsqlite3.a(MinGW用的导入库) - 把
libsqlite3.a放到你的项目目录,或者MinGW的lib目录下 - 编译时添加链接参数:
如果库在当前目录,也可以指定路径:g++ temp.cpp -o temp.exe -lsqlite3g++ temp.cpp -o temp.exe -L./ -lsqlite3 - 运行程序前,把
sqlite3.dll放到你的temp.exe同目录,否则程序会找不到动态库。
额外说明
你之前把#include <sqlite3.h>改成#include "sqlite3.h"并把头文件放同目录的操作是正确的,头文件问题已经解决,不用再调整。
内容的提问来源于stack exchange,提问作者harshmangalamv
相关产品推荐
相关产品推荐

