Я обновил до XCode 8.0
, и это дает мне печаль. Первая проблема заключалась в подписании кода. Это я исправил, выбрав профиль подготовки для отладки и выпуска из общих параметров проекта. Странно не понятно, почему он не мог просто работать, так как он отлично компилировался с предыдущими XCode
. Раньше XCode
сказал бы, что нет предварительного профиля и подскажите его исправить и исправить. Кажется, шаг назад. В любом случае, прошел этот вопрос.Ошибка Mach-O Linker, неопределенные символы для архитектуры после обновления xcode до 8.0
вопрос я сталкивается весь день эта ошибка при компиляции
Undefined symbols for architecture arm64:
"_write_ret", referenced from:
_dwsl in libtestlib.a(testlib.o)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
я искал write_ret
и это только прототип в файле заголовка, эта функция не вызывается вообще нигде! ! (Предположим, что статическая библиотека является частью более крупного проекта, я привел только файлы/код, необходимые для компиляции статической библиотеки для iOS). Это прекрасно готовилось в течение многих лет. Я вернулся к статическому исходному коду libary и сам с юмором удалил прототип write_ret
, скомпилировал его и обновил библиотеку в моем проекте и перестроил. Повторите ту же ошибку !. Что здесь происходит?? Я подтвердил, что он определенно использует правильную построенную библиотеку.
Я тогда решил, что я только что построил для armv7
только как это приложение для предприятий. Я вернулся к файлу проекта статической библиотеки и избавился от armv7s
и arm64
от «valid architectures
». Я меняю «архитектуры» на armv7
. Я перестроил библиотеку и обновил проект с помощью новой библиотеки.
Я также пошел в основной проект и изменил допустимые архитектуры, чтобы построить только armv7
.
На этот раз, когда я построил свой проект, я получаю эту ошибку
ld: warning: ignoring file /Users/rrr/Library/Developer/Xcode/DerivedData/P-eaxegvaceikvgqgllfiardmoorbv/Build/Products/Debug-iphoneos/libtestlib.a,
file was built for archive which is not the architecture being linked (armv7):
/Users/rrr/Library/Developer/Xcode/DerivedData/P-eaxegvaceikvgqgllfiardmoorbv/Build/Products/Debug-iphoneos/libtestlib.a
В терминале я побежал липо libtestlib.a
-info я получаю это:
input file libtestlib.a is not a fat file
Non-fat file: libtestlib.a is architecture: armv7
Так он построен для armv7
, так что XCode
жалуется на действительно?
У меня теперь нет идей. Может ли кто-нибудь пролить свет здесь?
Я хотел бы получить его для работы со всеми архитектурами, как это было до обновления XCode
, который я сделал в пятницу. Но худший случай, по крайней мере, компилируется только для armv7
. Я понимаю, что он все равно будет работать на любом iPhone 5 и новее в любом случае.
Хорошо, я только что заметил libstdC++. 6.dylib и libxml2.dlyib являются красными. Может быть так? Позвольте мне попытаться их прочитать. Это правильная вещь? Я смущен этим «import tbd вместо dylib». – rukiman
Да, вы можете импортировать libstdC++ 6.tbd вместо dylib ИЛИ вы можете сохранить импорт dylib. позвольте мне связать полезные ответы: http://stackoverflow.com/questions/31420166/libsqlite3-dylib-and-libz-dylib-missing-in-xcode-7-how-do-i-use-parse – boraseoksoon
У меня была надежда, Я поменял их на .tbd equilavents, но не надеялся. Он все еще терпит неудачу с символом (-ами), который не найден для архитектуры arm64 для функции _write_ret. Поэтому, возможно, я посмотрю каталог производных данных – rukiman