Embedded Framework конфликтует с версией, расположенной вне пакета - PullRequest
0 голосов
/ 04 марта 2011

В одном из моих приложений Mac есть фреймворк, который я встраиваю в комплект приложений. Теперь я нашел доказательства того, что на некоторых клиентских компьютерах приложение связывается с той же платформой, которая находится в папке / System / Library / Frameworks.

Я явно что-то упускаю, когда дело доходит до связывания встроенной платформы с приложением в XCode, поэтому вот как я это сделал ... и, возможно, вы можете указать мне на пропущенный шаг:

1) Я перетаскиваю каркасный проект в свой проект и устанавливаю зависимость между обоими проектами. 2) Я перетаскиваю продукт сборки базового проекта на фазу сборки "Link Binary with Libraries" моей цели 3) Я перетаскиваю продукт сборки каркасного проекта на фазу сборки «Copy Framework Files» моего целевого набора «Destination: Frameworks»

Все это прекрасно работает, но где-то мне нужно указать, что я хочу связать со встроенной версией фреймворка, а не с любой версией фреймворка, которая может быть найдена в системе. Есть ли где-нибудь путь поиска? или "статическая" ссылка?

Любая помощь будет оценена.

С уважением,

Frank

1 Ответ

1 голос
/ 05 марта 2011

Звучит так, как будто вы пропустили ключевой шаг.Вам также необходимо установить «имя установки» вашей встроенной платформы.

Когда вы связываете среду или динамическую библиотеку, ваше приложение будет искать среду по пути, указанному установкой платформы.название.Это должно указать относительный путь для встроенных платформ.Если это абсолютное имя, оно подберет версию установленной системы, даже если вы встроили библиотеку.

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

otool -L <framework-binary>

Эти два сообщения в блоге объясняют проблему, а также как правильно все настроить:

Кроме того, если вы компилируете dylib из командной строки (скажем, из библиотеки с открытым исходным кодом), просто добавьте следующее в CFLAGS, чтобы задать имя для вашей установки.

-install_name '@rpath'

Если вы хотите изменить имя установки существующего двоичного файла, используйте 'install_name_tool'.

Также убедитесь, что на этапе сборки копируемых файлов копируются нужные файлы в нужные места в вашем приложении.расслоение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...