我有一个Microsoft Visual Code 2017控制台应用程序,我想静态链接到sqlite3。我已链接sqlite3.lib
文件并包含sqlite3.h
文件。但是,当我执行程序时,它仍会弹出缺少sqlite3.dll
的消息。我认为sqlite3会静态链接,我做错了什么?
编译没有错误
这是我的代码:
#include "stdafx.h"
#include "sqlite3.h"
#pragma comment(lib, "sqlite3.lib")
static int callback(void *NotUsed, int argc, char **argv, char **azColName) {
int i;
for(i=0; i<argc; i++) {
printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
}
printf("\n");
return 0;
}
int main(int argc, _TCHAR* 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));
sqlite3_close(db);
return 1;
}
rc = sqlite3_exec(db, "create table stuff ( name )", callback, 0, &zErrMsg);
rc = sqlite3_exec(db, "insert into stuff values ('hello')", callback, 0, &zErrMsg);
rc = sqlite3_exec(db, "select * from stuff", callback, 0, &zErrMsg);
if(rc != SQLITE_OK) {
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
}
sqlite3_close(db);
return 0;
}
答案 0 :(得分:0)
您可以将 sqlite3.c
文件与其他 .c
或 .cpp
文件一起包含。这是整个事情的一个大文件。然后它将被静态链接而不处理 .lib
或 .dll
文件。