当我试图在设备上测试我的应用时,我得到以下错误。错误不会出现在模拟器中。我使用xcode 7.有人可以帮忙吗?
架构armv7的未定义符号:" _PKCS5_PBKDF2_HMAC_SHA1", 引自: _sqlcipher_cipher_ctx_key_derive在sqlcipher.a(sqlite3.o)" _HMAC_CTX_init",引自: sqlcipher.a中的_sqlcipher_page_hmac(sqlite3.o)" _HMAC_Init_ex",引自: sqlcipher.a(sqlite3.o)中的_sqlcipher_page_hmac" _HMAC_Final",引自: sqlcipher.a中的_sqlcipher_page_hmac(sqlite3.o)" _HMAC_CTX_cleanup",引自: sqlcipher.a中的_sqlcipher_page_hmac(sqlite3.o)" _RAND_bytes",引自: sqlcipher.a中的_sqlcipher_page_cipher(sqlite3.o) sqlcipher.a中的_sqlcipher_codec_ctx_init(sqlite3.o)" _HMAC_Update",引自: sqlcipher.a中的_sqlcipher_page_hmac(sqlite3.o)" _EVP_CIPHER_CTX_set_padding",引自: sqlcipher.a中的_sqlcipher_page_cipher(sqlite3.o)" _EVP_CipherInit",引自: sqlcipher.a中的_sqlcipher_page_cipher(sqlite3.o)" _EVP_CipherFinal",引自: sqlcipher.a中的_sqlcipher_page_cipher(sqlite3.o)" _EVP_get_cipherbyname",引自: sqlcipher.a中的_sqlcipher_codec_ctx_set_cipher(sqlite3.o) sqlcipher.a中的_sqlcipher_activate(sqlite3.o)" _OPENSSL_add_all_algorithms_noconf",引自: sqlcipher.a中的_sqlcipher_activate(sqlite3.o)" _EVP_MD_size",引自: sqlcipher.a中的_sqlcipher_codec_ctx_set_cipher(sqlite3.o)" _EVP_sha1",引自: sqlcipher.a中的_sqlcipher_codec_ctx_set_cipher(sqlite3.o) sqlcipher.a中的_sqlcipher_page_hmac(sqlite3.o)" _EVP_CIPHER_key_length",引自: sqlcipher.a中的_sqlcipher_codec_ctx_set_cipher(sqlite3.o)" _EVP_CipherUpdate",引自: sqlcipher.a中的_sqlcipher_page_cipher(sqlite3.o)" _EVP_CIPHER_iv_length",引自: sqlcipher.a中的_sqlcipher_codec_ctx_set_cipher(sqlite3.o)" _EVP_CIPHER_CTX_cleanup",引自: sqlcipher.a中的_sqlcipher_page_cipher(sqlite3.o)" _EVP_CIPHER_block_size",引自: sqlcipher.a中的_sqlcipher_codec_ctx_set_cipher(sqlite3.o)ld:找不到架构armv7 clang的符号:错误:链接器 命令失败,退出代码为1(使用-v查看调用)
答案 0 :(得分:0)
"架构armv7的未定义符号的常见原因"是:
您导入标题但不链接正确的库。这很常见,特别是对于像QuartzCore这样的库的头文件,因为默认情况下它不包含在项目中。要解决:
在Build Phases的Link Binary With Libraries部分添加正确的库。
如果要在默认搜索路径之外添加库,可以在构建设置的库搜索路径值中包含路径,并添加-l{library_name_without_lib_and_suffix}
(例如,对于libz.a使用 - lz)到Build Settings的Other Linker Flags部分。
您将文件复制到项目中但忘记检查要添加文件的目标。要解决:
您包含一个为另一个体系结构构建的静态库,例如主机上的模拟器i386。要解决:
如果您的库供应商有多个库文件要包含在项目中,您需要包含一个用于模拟器(i386)和一个用于设备(例如armv7)。
答案 1 :(得分:0)
这些是OpenSSL符号,因此您可能没有链接到libcrypto。将-lcrypto添加到链接器标志。