我遇到失败错误:“sqlite3_key”未在此范围内声明

I have fail error: ‘sqlite3_key’ was not declared in this scope

提问人:FelX3 提问时间:8/24/2023 更新时间:8/25/2023 访问量:36

问:

我有一个简单的代码:

#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 加密 -Isqlcipher/include -Lsqlcipher/libs -ldl -lsqlciphe

我有一个错误: 错误:未在此范围内声明“sqlite3_key”

我确实通过运行以下命令验证 libsqlcipher.so 是否sqlite3_key

NM libsqlcipher.so |grep sqlite3_key

并获取输出:

000000000005B47A T sqlite3_key

000000000005b4cd T sqlite3_key_v2

00000000000dd2e0 T sqlite3_keyword_check

00000000000dd2d1 T sqlite3_keyword_count

00000000000dd260 T sqlite3_keyword_name

它看起来应该是什么样子,但仍然如此。 我该如何解决这个问题?

并且还验证了它所在的路径

谢谢

sqlite sqlcipher

评论


答:

0赞 Stephen Lombardo 8/25/2023 #1

您需要添加到用于编译的命令上,以便从标头中引用。-DSQLITE_HAS_CODECsqlite3_key()