使用cl构建代码并连接到sqlite库

时间:2018-10-04 08:41:32

标签: c++ windows-10 cl

我有一个来自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以便源代码可以成功编译并可以使用动态库?

1 个答案:

答案 0 :(得分:1)

您不应链接.dll文件,而应将.lib文件链接到您的项目。目前尚不清楚从哪里获得sqlite3.dll的问题,为什么它没有链接它的.lib文件等等。它没有出现在sqlite.org中,因此您可能正在谈论其他站点。

使用SQLite库的建议方法是直接将其直接嵌入到您的应用程序中。这意味着只需添加sqlite3.c并在项目中包含sqlite3.h文件,它就可以正常工作。