2015-09-30 43 views
1

当我试图在设备上测试我的应用程序时,出现以下错误。错误不在模拟器中。我正在使用xcode 7.有人可以帮忙吗?铿锵声:错误:连接器命令失败,退出代码1仅在设备上出现

Undefined symbols for architecture armv7: "_PKCS5_PBKDF2_HMAC_SHA1", referenced from: _sqlcipher_cipher_ctx_key_derive in sqlcipher.a(sqlite3.o) "_HMAC_CTX_init", referenced from: _sqlcipher_page_hmac in sqlcipher.a(sqlite3.o) "_HMAC_Init_ex", referenced from: _sqlcipher_page_hmac in sqlcipher.a(sqlite3.o) "_HMAC_Final", referenced from: _sqlcipher_page_hmac in sqlcipher.a(sqlite3.o) "_HMAC_CTX_cleanup", referenced from: _sqlcipher_page_hmac in sqlcipher.a(sqlite3.o) "_RAND_bytes", referenced from: _sqlcipher_page_cipher in sqlcipher.a(sqlite3.o) _sqlcipher_codec_ctx_init in sqlcipher.a(sqlite3.o) "_HMAC_Update", referenced from: _sqlcipher_page_hmac in sqlcipher.a(sqlite3.o) "_EVP_CIPHER_CTX_set_padding", referenced from: _sqlcipher_page_cipher in sqlcipher.a(sqlite3.o) "_EVP_CipherInit", referenced from: _sqlcipher_page_cipher in sqlcipher.a(sqlite3.o) "_EVP_CipherFinal", referenced from: _sqlcipher_page_cipher in sqlcipher.a(sqlite3.o) "_EVP_get_cipherbyname", referenced from: _sqlcipher_codec_ctx_set_cipher in sqlcipher.a(sqlite3.o) _sqlcipher_activate in sqlcipher.a(sqlite3.o) "_OPENSSL_add_all_algorithms_noconf", referenced from: _sqlcipher_activate in sqlcipher.a(sqlite3.o) "_EVP_MD_size", referenced from: _sqlcipher_codec_ctx_set_cipher in sqlcipher.a(sqlite3.o) "_EVP_sha1", referenced from: _sqlcipher_codec_ctx_set_cipher in sqlcipher.a(sqlite3.o) _sqlcipher_page_hmac in sqlcipher.a(sqlite3.o) "_EVP_CIPHER_key_length", referenced from: _sqlcipher_codec_ctx_set_cipher in sqlcipher.a(sqlite3.o) "_EVP_CipherUpdate", referenced from: _sqlcipher_page_cipher in sqlcipher.a(sqlite3.o) "_EVP_CIPHER_iv_length", referenced from: _sqlcipher_codec_ctx_set_cipher in sqlcipher.a(sqlite3.o) "_EVP_CIPHER_CTX_cleanup", referenced from: _sqlcipher_page_cipher in sqlcipher.a(sqlite3.o) "_EVP_CIPHER_block_size", referenced from: _sqlcipher_codec_ctx_set_cipher in sqlcipher.a(sqlite3.o) ld: symbol(s) not found for architecture armv7 clang: error: linker command failed with exit code 1 (use -v to see invocation)

+0

是设备更新到iOS 9.0 –

+0

是设备更新到iOS 9.0 – eureka19

回答

0

为“为架构的ARMv7未定义的符号”的常见原因有:

  1. 您导入一个标题,不针对正确的库链接。这很常见,特别是像QuartzCore这样的库的头文件,因为默认情况下它不包含在项目中。解决方法:

    • 在Build Phases的Link Binary With Libraries部分添加正确的库。

    • 如果要添加默认的搜索路径之外的库可以包括在生成设置的库搜索路径值路径,并添加-l{library_name_without_lib_and_suffix}(如,对于libz.a用-lz)其他链接器标志部分的生成设置。

  2. 将文件复制到项目中,但忘记检查目标以将文件添加到。解决方法:

    • 为正确的目标打开Build Phases,展开Compile Sources并添加缺少的.m文件。

您包括对于像I386,你的主机上的模拟器的另一种架构建立一个静态库。若要解决:

如果您的库供应商有多个库文件以包含在项目中,则需要包含模拟器(i386)和设备(例如armv7)的库文件。

0

这些是OpenSSL符号,所以您可能不会链接到libcrypto。将-lcrypto添加到链接器标志。

+0

我已经将-lcrypto添加到链接器标志,但仍然收到相同的错误。 – eureka19

相关问题