2012-06-08 69 views
3

我試圖在我的Mac Lion上用sqlcipher替換POCO的sqlite。關於構建過程和替換的信息並不多,但我想我應該嘗試一下。SQLCipher + POCO C++

我已經得到了sqlcipher合併,然後我已經更換sqlite3.c和在數據/ SQLite的/ SRC波索與sqlcipher的目錄sqlite3.h,加入SQLITE_HAS_CODEC和SQLITE_TEMP_STORE = 2個PARAMS到生成文件和試圖建立這整個事情。

不過,我發現了以下錯誤:

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 

有沒有人嘗試過呢?有沒有人知道這個可能的解決辦法?謝謝!

回答

4

這些是OpenSSL符號,所以您可能不會鏈接到libcrypto。將-lcrypto添加到鏈接器標誌。

+0

沒錯!我錯誤地鏈接了。非常感謝您的幫助! – deadringer