Неопределенные символы для архитектуры x86_64, но ресурсы ошибок находятся внутри встроенной среды

Я начинаю разрабатывать iOS-приложение, используя код фреймворка, который сам создал из исходного кода.

Я добавил необходимые архитектуры в проект фреймворка и построил фреймворк, который добавил его в мое приложение.
И когда я попытался собрать приложение, появилось Undefined symbols for architecture x86_64 ошибок, например:

"_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

Я посмотрел исходники фреймворка, файл 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 файлов является причиной сбоя сборки? Но если причина в этом, то как удалось построить фреймворк?


person General Failure    schedule 05.04.2016    source источник


Ответы (1)


Изучая файлы симулятора, я не вижу окончательной итерации aes или openssl, которые являются «неотъемлемыми частями».

В этой заметке вам придется скомпилировать свой собственный OpenSSL для поддержки этих отсутствующих библиотек.

Я нашел для вас репозиторий github, который может вам помочь:

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

Надеюсь это поможет..

person Adrian Sluyters    schedule 05.04.2016
comment
Я получил другую версию этого фреймворка из другого источника, и моя проблема была решена. Но спасибо, я проголосовал за ваш ответ за возможно полезный совет! - person General Failure; 07.04.2016