失败错误:未在此范围中声明“sqlite3_key”

svgewumm  于 2023-10-23  发布在  SQLite
关注(0)|答案(1)|浏览(242)

我有一个简单的代码:

#include <sqlite3.h>
#include <sqlite.h.in>
#include <cstring> 

int main() {
    sqlite3 *db = nullptr;
    const char *dbName = "en.db";
    const char *key = "encryption_key";

    int result = sqlite3_open(dbName, &db);
    
    result = sqlite3_key(db, key, strlen(key));
    
    sqlite3_close(db);
    return 0;
}

当编译它时:

  • g++加密. cpp-o encrypt -Isqlcipher/include -Lsqlcipher/libs -ldl -lsqlciphe*

我有一个错误:错误:'sqlite3_key'未在此作用域中声明
我确实验证了libsqlcipher.so有sqlite3_key,方法是运行:

  • nm libsqlcipher.so|grep sqlite3_key*

并得到输出:
00000000005b47a T sqlite3_key
00000000005b4cd T sqlite3_key_v2
0000000000dd2e0 T sqlite3_keyword_check
0000000000dd2d1 T sqlite3_keyword_count
0000000000dd260 T sqlite3_keyword_name
它看起来就像它应该看起来一样,但仍然。我该怎么弥补?
也确认了它所在的路径
谢谢

olhwl3o2

olhwl3o21#

您需要将-DSQLITE_HAS_CODEC添加到用于编译的命令中,以便从头文件引用sqlite3_key()

相关问题