dyld: библиотека не загружена: libNiTE2.dylib.... Причина: изображение не найдено
Я пытаюсь использовать библиотеку NiTE2, я успешно включил и связал OPENNI2 и драйвер libfreenect. Вот сообщение об ошибке:
dyld: Library not loaded: libNiTE2.dylib
Referenced from: /Users/yangwang/Documents/cinder_projects/basic/xcode/build/Debug/basic.app/Contents/MacOS/basic
Reason: image not found
ПРИМЕЧАНИЕ. Существует довольно много похожих вопросов относительно одних и тех же сообщений об ошибках. но никто из них не помог моему делу.
Несколько вещей, которые я уже пробовал, но не работает:
Я попытался добавить файл dylib во встроенные двоичные файлы, как показано ниже: dyld: библиотека не загружена, причина: изображение не найдено
Я также удостоверился, что включил правильный путь поиска для библиотеки и правильно настроил его в пути поиска в библиотеке, как показано ниже: Eclipse на Mac dyld: библиотека не загружена: изображение не найдено
Все относящиеся к openni2 и libfreenect дилибы находятся без проблем.
Вот изображения моих настроек:
XCode v: 9.3.1 Mac OS v: 10.13.4
----ОБНОВИТЬ-----
Я добавил некоторые параметры копирования файлов в фазу сборки, снимок экрана здесь, включая все, что находится внутри моей папки include и lib. Это не решило мою проблему (пока). Затем, после сборки, я пошел myapp.app/Contents/MacOS
и использовал ./myapp
запустить сборку. И он волшебным образом запускается и находит все библиотеки! Я не совсем понимаю, почему, надеюсь, кто-то может объяснить.
1 ответ
libNite2.dylib связан с той же папкой, что и основной исполняемый файл.
Вы могли бы использовать @executable_path
, чтобы указать на dylib: таким образом, двойной щелчок по файлу должен работать.
Может быть возможно изменить это, используя installname_tool
:
cd /Users/yangwang/Documents/cinder_projects/basic/xcode/build/Debug/basic.app/Contents/MacOS/
затем
install_name_tool -change libNiTE2.dylib @executable_path/libNiTE2.dylib basic
,
Скрестив пальцы, это сработает, когда вы дважды щелкните файл.app.
Вы можете добавить это как дополнительный шаг в посткомпиляции XCode, чтобы избежать необходимости вводить это каждый раз, когда вы что-то меняете в коде. Что-то в этом роде: не забывайте, что скриншот на самом деле взят из проекта OpenFrameworks, а не проекта Cinder, но у вас должно быть похожее представление в XCode (некоторые переменные могут отличаться).
Еще одно замечание: на основе вашего скриншота похоже, что OpenNI связан с /usr/local/opt/openni2
(угадывая доморощенную символическую ссылку). Это будет работать на вашем компьютере, но не на другом Mac, если вы не установите OpenNI2 через homebrew на нем (в противном случае, если библиотеки OpenNI скопированы в исполняемый файл, вы можете также рассмотреть возможность установки относительных путей к исполняемым файлам для них).