【问题标题】:error LNK2019: unresolved external symbol _sqlite3_key referenced in function _main错误 LNK2019:函数 _main 中引用的未解析的外部符号 _sqlite3_key
【发布时间】:2014-01-21 19:18:20
【问题描述】:

我正在开发一个 c++ 项目,我想在其中使用 Sqlite 数据库,但在我的代码中出现错误。

作为错误LNK2019:函数_main中引用的未解析的外部符号_sqlite3_key

我的代码是:

sqlite3 *db;

int rc;
rc = sqlite3_open("sql.db", &db);
const char ch[] = "1234";

rc = sqlite3_key(db,ch,strlen(ch));

if (sqlite3_exec(db, "SELECT count(*) FROM sqlite_master;", NULL, NULL, NULL) == SQLITE_OK) {
    printf("Success");
     // key is correct. 
 } else { 
     // key is incorrect
     printf("Error in Database Execution");
 }

我正在使用VS2010。 我完成了libdll 的所有必需设置。 但到目前为止它对我没有帮助。

谁能帮我解决这个问题?

【问题讨论】:

  • sqlite3_key() 不是标准 sqlite 的一部分,因此首先确保您的链接器路径具有带有此扩展名的 sqlite 版本。
  • 是的,它有sqlite3ext.h,但仍然给出同样的错误
  • 编译时使用头文件.h。图书馆,例如链接时使用.lib。您有一个链接器错误。
  • @laalto 是的,你说得对,我已经下载了DLL and LIB,但这对我没有帮助。
  • @laalto,你是对的。感谢您的支持

标签: c++ sqlite


【解决方案1】:

看起来您正在使用SQLCipherSQLiteEncrypt 之类的加密库,这意味着您必须将相应的库(例如SQLiteEncrypt.lib)添加到库设置中。您可能还可以添加使用#pragma

#pragma comment(lib, "SQLiteEncrypt.lib")

【讨论】:

  • 对不起,我没有使用 SqliteEncrypt 库,因为它对我在应用程序 thats why I am using native sqlite3.dll 和 sqlite3.lib 中的进一步步骤没有帮助`
  • 然后从源中删除包含rc = sqlite3_key(db,ch,strlen(ch)); 的行
  • 如果你使用 SQLCipher,你必须使用那个库(我找不到它的名字)。但是当您使用 sqlite3_key 时,您使用的扩展程序不是本机 sqlite3.dll 和 sqlite3.lib 的一部分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-18
  • 2013-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多