MSVC2017静态链接SQLite3

时间:2017-07-04 17:38:43

标签: c++ visual-studio sqlite visual-studio-2017 static-linking

我有一个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;
    }

1 个答案:

答案 0 :(得分:0)

您可以将 sqlite3.c 文件与其他 .c.cpp 文件一起包含。这是整个事情的一个大文件。然后它将被静态链接而不处理 .lib.dll 文件。