架构x86_64的未定义符号,但错误资源在构建框架内

时间:2016-04-05 19:12:24

标签: objective-c xcode undefined-symbol

我开始使用我自己从源代码构建的框架代码开发iOS应用程序。

我在框架项目和构建框架中添加了所需的架构,将其添加到我的应用程序中 当我尝试构建应用程序时,出现MTEncryption错误,例如:

"_AES_ige_encrypt", referenced from:
  _MTAesEncryptInplace in MTProtoKit iOS (MTEncryption.o)
  _MTAesEncryptInplaceAndModifyIv in MTProtoKit iOS (MTEncryption.o)
  ...
"_AES_set_encrypt_key", referenced from:
  _MTAesEncryptInplace in MTProtoKit iOS (MTEncryption.o)
  _MTAesEncryptInplaceAndModifyIv in MTProtoKit iOS (MTEncryption.o)
  ...

还有很多其他人,不仅仅是MTEncryption.m

我查看了框架源文件void MTAesEncryptInplace(NSMutableData *data, NSData *key, NSData *iv) { AES_KEY aesKey; AES_set_encrypt_key(key.bytes, 256, &aesKey); // <-- _AES_set_encrypt_key unsigned char aesIv[AES_BLOCK_SIZE * 2]; memcpy(aesIv, iv.bytes, iv.length); AES_ige_encrypt(data.bytes, (void *)data.bytes, data.length, &aesKey, aesIv, true); // <-- _AES_ige_encrypt }

.../openssl/aes.h

这些方法位于aes.m中,已包含在构建阶段中。

但是我注意到.m文件丢失了(不仅仅是在构建阶段丢失,但文件不存在)。
这是正常的吗?或者确切地说{{1}}个文件缺失是构建失败的原因吗?但如果是原因,框架是如何成功构建的?

1 个答案:

答案 0 :(得分:1)

从围绕模拟器文件的侦察中,我看不到aes或openssl的确切迭代,它们来自“零件和包裹”。

在这方面,您必须编译自己的OpenSSL以支持这些缺失的库。

我确实找到了一个github repo给你,可能会有所帮助:

https://github.com/x2on/OpenSSL-for-iPhone

希望这会有所帮助..