如何将sqlcipher包含在Windows上的C程序中并对其进行编译?

How to include sqlcipher into a C program on windows and compile it?

提问人:stonktrader 提问时间:10/17/2023 最后编辑:sepp2kstonktrader 更新时间:10/17/2023 访问量:46

问:

我真的很难将 sqlcipher 包含在我的 C 程序中(现在它适用于常规 sqlite3)

我正在使用 Mingw-w64 GCC 编译器运行 Windows 10。 OpenSSL 安装在C:\Program Files\OpenSSL-Win64

我已经设法在 Windows 上编译了 sqlcipher,我可以轻松地在 cmd 中使用它(加密和解密它。pragma key = "..."

但是,我需要它在我的 C 程序中工作。

使用常规的 sqlite3,我刚刚下载了他们的 amaglamation 文件,然后我用"#include sqlite/sqlite3.h" gcc -o app app.c sqlite/sqlite3.c -lpthread

但是,当我使用相同的命令进行编译和编译时,程序会编译并“工作”。它创建数据库但未加密。"#include sqlcipher/sqlite3.h"

命令被简单地忽略,并且数据库没有加密。PRAGMA key = '12345';

我在编译 C 程序方面几乎没有经验,我几个月前才开始学习 C。

这是一个创建加密数据库的简单 C 代码,数据库已创建但未加密。

#include <stdio.h>
#include "sqlcipher/sqlite3.h" // Ensure this is the SQLCipher version
#include <stdlib.h>

int main() {
    sqlite3* db;
    int rc;

    // Open a new database file
    rc = sqlite3_open("encrypted.db", &db);
    if (rc) {
        printf("Error: couldn't open the database.\n");
        sqlite3_close(db);
        return 1;
    }

    // Encrypt the database using SQLCipher
    rc = sqlite3_exec(db, "PRAGMA key = '12345';", 0, 0, 0);
    if (rc != SQLITE_OK) {
        printf("Error: couldn't encrypt the database.\n");
        sqlite3_close(db);
        return 1;
    }

    // Create the "people" table
    char* sql = "CREATE TABLE people (id INTEGER, name TEXT);";
    rc = sqlite3_exec(db, sql, 0, 0, 0);
    if (rc != SQLITE_OK) {
        printf("Error: couldn't create table.\n");
        sqlite3_close(db);
        return 1;
    }

    // Close the database
    sqlite3_close(db);

    printf("Encrypted database created successfully.\n");
    return 0;
}

我感谢任何帮助

  1. 我让 sqlcipher 在 CMD 中的窗口上运行,但它在我编写的 C pgogram 中不起作用。 将本教程用于 Windows:https://www.domstamand.com/compiling-sqlcipher-sqlite-encrypted-for-windows-using-visual-studio-2022/

  2. 我怀疑我需要在我的 copile 命令中添加更多内容,但我之前几乎没有编译 C 程序的经验。

  3. 提供的代码创建数据库,但未加密。该代码应创建加密数据库。

c sqlite sqlcipher

评论


答: 暂无答案