Вопрос по frameworks, macos, bundle, xcode – Встраивание фреймворков в пакет приложений Mac

8

я пытаюсь добавить рамки SDL и SDL_ttf в мое приложение, и ямы сделали это обычным способом: добавили их в "Связать двоичные файлы с библиотеками " раздел и добавлен этап копирования файлов, который копирует их в каталог Frameworks. Это создает пакет приложений со встроенными фреймворками. Однако, когда я запускаю приложение, я получаю эту ошибку:

dyld: библиотека не загружена: @ rpath / SDL_ttf.framework / Versions / A / SDL_ttf Ссылка на: Содержание / MacOS / MacHub Причина: изображение не найдено

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

Есть идеи, пожалуйста?

Ваш Ответ

1   ответ
5

Я обнаружил причину этого в комментарии на веб-странице. Мне нужно было установить "Runpath Search Paths " установить настройки на "@loader_path /../ Каркасы» и рамки найдены.

Почему фреймворки не ищутся автоматически в каталоге Frameworks пакета приложений, для меня это полная загадка? Ты слушаешь Apple? :)

В моем проекте исполняемый файл собирал копии фреймворка / Library / Frameworks и приложения Contents / Frameworks и предупреждал, что выбор библиотеки будет неопределенным (на самом деле SDL_Mixer не сделал 'работать в этой конфигурации). Этот совет также решает эту проблему. Justin
Настоящая проблема здесь в том, что у Apple есть хорошая документация для очень простыхначиная" использование фреймворков и подробных сведений о том, как все это работает, но не слишком много между ними… abarnert
Если вы строите вещи так, как рекомендует Apple, она в конечном итоге будет искать@loader_path/../Frameworks/SDL.framework во-первых, чтобы вы выигралиэто не нужно на пути поиска. Это более безопасное решение, потому что оно гарантирует, что ваше приложение выигралов конечном итоге связаны с неправильной версией фреймворка. Если вы неделать то, что они рекомендуют ... ну, тогда вы должны изучить все виды низкоуровневых деталей. (То, что вы, вероятно, действительно хотите здесь, этоinstall_name_tool, но вероятность того, что вы сами это узнаете, не зная заранее, невелика…) abarnert
Просто проверяю - я хочу связать сторонние фреймворки в моем фреймворке. В настоящее время я должен предоставить своим клиентам свою платформу и каждую фреймворк, на который я ссылаюсь. Я'я ищу способ упаковать все это в мою инфраструктуру, чтобы мои клиенты не должны были ссылаться на эти сторонние платформы. Это то, что вы пытаетесь сделать в этом вопросе? Если так, то яЯ хотел бы получить больше информации от вас. Готов задать вопрос по вашему запросу. Patricia
Нет, вопрос был в том, как приложение находит те фреймворки, которые уже упакованы в приложение. Чтобы упаковать, вы должны связаться с ними в XCode и добавить их в фазе сборки файлов копирования. Но даже если у вашего пакета приложений есть фреймворки, они не были найдены. Этот вопрос решает эту проблему. Cthutu

Похожие вопросы