sqlite - SQLCipher + POCO C++

标签 sqlite build sqlcipher poco-libraries

我正在尝试用 sqlcipher 替换 POCO 的 sqlite|在我的 Mac Lion 上。关于构建过程和替换的信息不多,但我想我应该试一试。

我有 sqlcipher 合并,然后我用 sqlcipher 替换了 Data/Sqlite/src Poco 目录中的 sqlite3.c 和 sqlite3.h,将 SQLITE_HAS_CODEC 和 SQLITE_TEMP_STORE=2 参数添加到 Makefile 并尝试构建这一切。

但是我收到以下错误:

Undefined symbols for architecture x86_64:
  "_EVP_get_cipherbyname", referenced from:
      _sqlcipher_activate in sqlite3.o
      _sqlcipher_codec_ctx_set_cipher in sqlite3.o
  "_OPENSSL_add_all_algorithms_noconf", referenced from:
      _sqlcipher_activate in sqlite3.o
  "_RAND_bytes", referenced from:
      _sqlcipher_random in sqlite3.o
  "_EVP_CIPHER_key_length", referenced from:
      _sqlcipher_codec_ctx_set_cipher in sqlite3.o
  "_EVP_CIPHER_iv_length", referenced from:
      _sqlcipher_codec_ctx_set_cipher in sqlite3.o
  "_EVP_CIPHER_block_size", referenced from:
      _sqlcipher_codec_ctx_set_cipher in sqlite3.o
  "_EVP_sha1", referenced from:
      _sqlcipher_codec_ctx_set_cipher in sqlite3.o
      _sqlcipher_page_hmac in sqlite3.o
  "_EVP_MD_size", referenced from:
      _sqlcipher_codec_ctx_set_cipher in sqlite3.o
  "_HMAC_CTX_init", referenced from:
      _sqlcipher_page_hmac in sqlite3.o
  "_HMAC_Init_ex", referenced from:
      _sqlcipher_page_hmac in sqlite3.o
  "_HMAC_Update", referenced from:
      _sqlcipher_page_hmac in sqlite3.o
  "_HMAC_Final", referenced from:
      _sqlcipher_page_hmac in sqlite3.o
  "_HMAC_CTX_cleanup", referenced from:
      _sqlcipher_page_hmac in sqlite3.o
  "_EVP_CipherInit", referenced from:
      _sqlcipher_page_cipher in sqlite3.o
  "_EVP_CIPHER_CTX_set_padding", referenced from:
      _sqlcipher_page_cipher in sqlite3.o
  "_EVP_CipherUpdate", referenced from:
      _sqlcipher_page_cipher in sqlite3.o
  "_EVP_CipherFinal", referenced from:
      _sqlcipher_page_cipher in sqlite3.o
  "_EVP_CIPHER_CTX_cleanup", referenced from:
      _sqlcipher_page_cipher in sqlite3.o
  "_PKCS5_PBKDF2_HMAC_SHA1", referenced from:
      _sqlcipher_cipher_ctx_key_derive in sqlite3.o
ld: symbol(s) not found for architecture x86_64

有没有人试过这个?有人知道这个的潜在解决方法吗?谢谢!

最佳答案

那些是 OpenSSL 符号,因此您可能没有链接到 libcrypto。将 -lcrypto 添加到链接器标志。

关于sqlite - SQLCipher + POCO C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10945319/

相关文章:

sqlite - SQLite 中的 IF ELSE 条件

c# - TeamCity 8 中的 DotCover 不起作用

java - Ant Build 没有给出确切的类文件

react-native - 在react-native中使用加密数据库

c++ - SQLite 是否使用 SQLCipher 扩展泄漏内存?

python - 迭代非常大的表并更新行的最有效方法是什么?

java - Android while !c.isAfterLast() loop not being entered

c# - 如何使用 Entity Framework 保存外键?

c++ - 从文件中读取 SCons 环境设置

c - 函数 'sqlite3_rekey' 的隐式声明在 C99 中无效