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