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

ПРИМЕЧАНИЕ. Существует довольно много похожих вопросов относительно одних и тех же сообщений об ошибках. но никто из них не помог моему делу.

Несколько вещей, которые я уже пробовал, но не работает:

Все относящиеся к 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 (некоторые переменные могут отличаться).

install_name_tool изменить путь к dylib после компиляции

Еще одно замечание: на основе вашего скриншота похоже, что OpenNI связан с /usr/local/opt/openni2(угадывая доморощенную символическую ссылку). Это будет работать на вашем компьютере, но не на другом Mac, если вы не установите OpenNI2 через homebrew на нем (в противном случае, если библиотеки OpenNI скопированы в исполняемый файл, вы можете также рассмотреть возможность установки относительных путей к исполняемым файлам для них).

Другие вопросы по тегам