我正在尝试将 SQLite 嵌入到我的项目中。我已将以下文件包含到名为lite的目录中:sqlite3.dll、sqlite3.h 和 sqlite3.lib。
这是我的项目:
#include <stdio.h>
#include <lite/sqlite3.h>
int main(int argc, char* argv[])
{
sqlite3 *db;
char *zErrMsg = 0;
int rc;
rc = sqlite3_open("test.db", &db);
if( rc ){
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
return(0);
}else{
fprintf(stderr, "Opened database successfully\n");
}
sqlite3_close(db);
}
Run Code Online (Sandbox Code Playgroud)
当我运行项目时,出现以下错误:
:-1: error: cannot find -lsqlite3d
collect2.exe:-1: error: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
我可能做错了什么?
我在 Qt 工作。这是我的.pro文件:
TEMPLATE = app
CONFIG += console c++11
CONFIG -= app_bundle
CONFIG -= qt
SOURCES += main.cpp
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/lite/ -lsqlite3
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/lite/ -lsqlite3d
else:unix: LIBS += -L$$PWD/lite/ -lsqlite3
INCLUDEPATH += $$PWD/lite
DEPENDPATH += $$PWD/lite
Run Code Online (Sandbox Code Playgroud)
既然你已经在使用 Qt 为什么不使用Qt SQL 模块呢?您将省去很多痛苦,只需添加即可绕过此类链接问题
QT += sql
Run Code Online (Sandbox Code Playgroud)
到您的 Qt 项目文件,并添加
#include <QtSql>
Run Code Online (Sandbox Code Playgroud)
向您提供文件。您将拥有许多模型视图类,它们有助于将数据库集成到应用程序 UI 中。
这是在 Qt 应用程序中使用 SQL 的推荐方法,除非您有非常非常具体的需求。您可以让 Qt 在底层使用不同的 SQL 引擎(SQLite、MySQL...),但 Qt 会为您抽象所有这些。