我有一个来自sqlite网站的示例代码。
#include <stdio.h>
#include <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);
}
我将上面的代码放在test12_sqlite_database.cpp中,并将sqlite标头和源文件放在include目录中。然后,我想使用cl.exe构建此代码。这是构建命令:
cl /EHsc test12_sqlite_database.cpp /I include /link d:\sqlite\sqlite3.dll
错误是:
d:\sqlite\sqlite3.dll : fatal error LNK1107: invalid or corrupt file: cannot read at 0x360
搜索网络后,它说我无法链接到动态库。那么如何使用cl以便源代码可以成功编译并可以使用动态库?
答案 0 :(得分:1)
您不应链接.dll文件,而应将.lib文件链接到您的项目。目前尚不清楚从哪里获得sqlite3.dll的问题,为什么它没有链接它的.lib文件等等。它没有出现在sqlite.org中,因此您可能正在谈论其他站点。
使用SQLite库的建议方法是直接将其直接嵌入到您的应用程序中。这意味着只需添加sqlite3.c并在项目中包含sqlite3.h文件,它就可以正常工作。