Я пытаюсь импортировать и использовать проверенный объектный модуль OpenSSL FIPS в моем проекте iOS. Когда я строю проекта я получаю эту ошибку, говоря:Неопределенная архитектура для armv7 - импорт библиотек C
Undefined symbols for architecture armv7:
"std::string::clear()", referenced from:
+[CryptoUtilities getSeed:::] in CryptoUtilities.o
+[CryptoUtilities getKey:::] in CryptoUtilities.o
"___cxa_pure_virtual", referenced from:
vtable for WBXML::CWBXMLParser in CWBXMLParser.o
"std::string::substr(unsigned long, unsigned long) const", referenced from:
WBXML::CWBXMLParser::LoadWBXMLHeader(std::string const&, unsigned long, unsigned long&) in CWBXMLParser.o
WBXML::CWBXMLParser::LoadTagContents(WBXML::CTag*, std::string const&, unsigned long, unsigned long&, unsigned short&, bool&) in CWBXMLParser.o
+[CryptoUtilities getKey:::] in CryptoUtilities.o
"operator delete(void*)", referenced from:
__gnu_cxx::new_allocator<WBXML::CTag>::deallocate(WBXML::CTag*, unsigned long) in CTag.o
__gnu_cxx::new_allocator<int>::deallocate(int*, unsigned long) in CryptoUtilities.o
// This goes for some more functions and then
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Я знаю, что этот вопрос был задан и ответил на here. Я пробовал все упомянутые решения, но я не могу исправить эту проблему.
Вот что я пытаюсь решить эту проблему.
Я добавил файлы libs и canister в разделе связанных фреймворков и библиотек.
Поскольку это lib, у меня нет никаких файлов .m.
Я попытался сменить компилятор C++ на Compiler Default, LLVM, GNU, и никто из них не работал.
Я пробовал добавить -ObjC в другие флаги компоновщика.
Я попробовал extern C при включении файлов заголовков. В определении файлов заголовков также правильно используется extern C.
Update:
Я правильно установить параметры компилятора, как указано ниже.
Кроме того, если это будет любая помощь в выяснении этой ошибки. Именно при запуске этого скрипта на этапе сценария я получаю упомянутые ошибки.
https://docs.google.com/document/d/1YEebn2p8HKhc7lxUWa3xMHXWt1cELXLm3AoKElbEyuU/edit?usp=sharing
Пожалуйста, помогите мне.
Update2:
Выход xcrun -sdk iphoneos льего -info CryptoUtilities.o является
Обезжиренного файл: CryptoUtilities.o является архитектурой: ARMv7
Более подробной информации об ошибках: https://docs.google.com/document/d/1CqSa_tAsQP1JY_IxvXLDyYyQUI0iebV_REiCquwDXyk/edit?usp=sharing
Просьба помочь. Я занимаю эту должность около месяца.
'__gnu_cxx :: ...' из среды выполнения GNU C++ ('-stdlib = libstdC++'). Вы должны скомпилировать WBXML со средой выполнения LLVM C++ ('-stdlib = libC++'). Если библиотеки были смешаны/сопоставлены противоположным образом, тогда вы будете получать ошибки об отсутствии '__1 :: ...' – jww
Также добавьте вывод 'xcrun -sdk iphoneos lipo -info CryptoUtilities.o'. Но похоже, что вы не используете правильные сроки выполнения C++. – jww
@jww Я изменил диалект и библиотеку на (по умолчанию компилятора, по умолчанию компилятора), а также на libC++. Это дало мне ту же ошибку. Также добавлен вывод cmd выше. – Theguy