Я получаю ошибку ссылку на Mac сборки моего FireBreath плагин ищет, как это:FireBreath Mac OS X Foundation
Undefined symbols for architecture x86_64:
"_IOIteratorNext", referenced from:
MyFunction(...) in MyFile.o
Пожалуйста, помогите мне решить эту ошибку связи.
У меня есть подобные ошибки для "_IOObjectRelease", "_IORegistryEntryCreateCFProperty", "_IORegistryEntryGetParentEntry", "_IOServiceGetMatchingServices", "_IOServiceMatching", and "_kIOMasterPortDefault"
. Это заставляет меня думать, что мне нужно включить Framework IOKIT и COREFOUNDATION.
я пришел к выводу, что эти рамочные, что мне нужно, потому что я могу временно получить сборки, чтобы добиться успеха, добавив их непосредственно в Xcode, как это:
- В навигаторе проекта выберите проект.
- Выберите цель.
- Выберите вкладку «Построить фазы».
- Открыть расширитель 'Link Binaries With Libraries' (Возможно, вам придется использовать 'Add Build Phase').
- Нажмите кнопку «+» один раз, чтобы добавить каждую из рамок.
После добавления рамок через Xcode сборка завершается успешно. Однако после повторного запуска сценария подготовки prepmac.sh Frameworks теряются, и сборка завершается с ошибкой.
Я попытался добавить Frameworks через FireBreath несколькими способами, отредактировав PluginConfig.cmake и Mac/projectDef.cmake и даже рассмотрев модифицированный CMakeLists.txt, но это кажется менее перспективным.
Я попытался следующие высказывания в различных комбинациях в двух .cmake
файлов, но я не уверен, о том, где поставить их:
find_library(IOKIT_FRAMEWORK IOKit)
message("Finding library IOKit: ${IOKIT_FRAMEWORK}")
find_library(COREFOUNDATION_FRAMEWORK CoreFoundation)
message("Finding library CoreFoundation: ${COREFOUNDATION_FRAMEWORK}")
target_link_libraries(${PROJECT_NAME}
${COREFOUNDATION_FRAMEWORK}
${IOKIT_FRAMEWORK}
${PLUGIN_INTERNAL_DEPS}
)
Ни одно из изменений не кажется, чтобы изменить журнал сборки. Конечно, я генерирование проекта между изменениями с «prepmac.sh», в которой новые заявления «сообщение» сообщают:
Finding library IOKit: /System/Library/Frameworks/Cocoa.framework
Finding library CoreFoundation: /System/Library/Frameworks/CoreFoundation.framework
Решение: на основе рекомендаций taxilian решения было чтобы правильно указать правильные рамки в Mac/projectDef.cmake и полностью удалить каталог сборки и переделать его с нуля с помощью сценария prepmac.sh.
Уважаемый налогоплательщик, Спасибо за ваш быстрый ответ! Да, я уже добавлял фреймворки в «get_link_libraries», но мои команды «find_library» не были раньше «add_mac_plugin», и случай с именами моих фондов не соответствовал вашим предложениям. Однако эти изменения не помогли. Обратите внимание, что я догадался об именах фреймов, поэтому они вряд ли будут точно верны. Какие-нибудь дальнейшие идеи? –
добавьте строку, которая выглядит так: message («Поиск библиотеки IOKit: $ {IOKIT_FRAMEWORK}») - это покажет вам, находила ли она библиотеку. если это не так, вам нужно выяснить, почему нет – taxilian
prepmac.sh, похоже, нашел их обоих: Поиск библиотеки IOKit: /System/Library/Frameworks/Cocoa.framework Поиск библиотеки CoreFoundation:/System/Library/Каркасы/CoreFoundation.framework. Я не уверен, что это те основы, которые мне нужны для конкретных ошибок Link. –