Подтвердить что ты не робот

Рамка Bundle с применением в XCode

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

Когда я запускаю приложение с другого компьютера, кроме моего (или если я удаляю OpenCV из /Library/Frameworks/ ), я получаю следующую ошибку:

Dyld Сообщение об ошибке: Библиотека не нагрузить: /Users/david/Library/Frameworks/OpenCV.framework/Versions/A/OpenCV Ссылка из: /Users/g/Demo/Slates/ClipSplitter/build/Release/ClipSplitter.app/Contents/MacOS/ClipSplitter Причина: изображение не найдено

В моей системе нет пользователя "david", если это имеет значение. Также это готовый OpenCV, загруженный из Интернета. (Вот скриншот проекта в соответствии с запросом в комментариях.)

4b9b3361

Ответ 1

Когда сборка OpenCV.framework была создана, она была настроена на использование пути установки /Users/david/Library/Frameworks/.

Поскольку вы хотите использовать библиотеку как частную структуру (установленную в оболочке приложения в ClipSplitter.app/Contents/Frameworks/OpenCV.framework), вам необходимо изменить ее путь установки. Это можно легко сделать с помощью терминала следующим образом:

$ install_name_tool -id @executable_path/../Frameworks/OpenCV.framework/OpenCV <your_path>/OpenCV.framework/OpenCV

Конечно, вам нужно настроить путь к последнему аргументу.

Теперь, когда вы связываете свое приложение, ваша модифицированная структура сообщает компоновщику, что dyld должен искать OpenCV.framework в оболочке приложения вашего приложения (в каталоге ClipSplitter.app/Contents/Frameworks).

Теперь вам нужно скопировать OpenCV.framework в вашу оболочку приложения. Вы можете сделать это как часть процесса сборки, добавив фазу сборки файлов копий: щелкните правой кнопкой мыши по вашей цели, выберите Add- > New Build Phase- > New Copy Files Build Phase. Выберите "Рамки" из раскрывающегося списка "Место назначения" и закройте диалоговое окно.

Теперь ваша цель будет содержать новую фазу, к которой вы можете добавить OpenCV.framework, перетащив значок из Навигатора проектов в левой части окна Xcode. Обратите внимание, что Xcode не позволит вам добавить папку на фазу "Копировать файлы", используя кнопку "+", поэтому, чтобы скопировать фрейм, вам придется перетащить и отбросить его.

Ответ 3

Используя Xcode 5, вы можете облегчить это, используя панель Build Phases вашего целевого приложения.

Внешний вид этой панели по умолчанию:

Нажав кнопку "+" под Скопировать файлы, вы можете добавить свою фреймворк в файл, который будет скопирован в Frameworks в вашем приложении.

Теперь, когда вы создадите, ваши Framework будут скопированы в ваш пакет.