dyld: библиотека не загружена: libNiTE2.dylib .... причина: изображение не найдено - PullRequest
0 голосов
/ 29 мая 2018

Библиотека, которую я пытаюсь использовать: 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 dylibsнаходятся без проблем.

Вот изображения моих настроек:

представление иерархии проекта

путь поиска библиотеки

XCode v: 9.3.1 Mac OS v: 10.13.4

---- ОБНОВЛЕНИЕ -----

Я добавил несколько Копирование файлов настроек в фазу сборки, скриншот здесь , включая все, что находится в моей папке include и lib.Это не решило мою проблему ( пока ).Затем, после сборки, я пошел myapp.app/Contents/MacOS и использовал ./myapp для запуска сборки.И он волшебным образом запускается и находит все библиотеки!Я не совсем понимаю, почему, надеюсь, кто-то может объяснить.

1 Ответ

0 голосов
/ 30 мая 2018

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 change dylib path post compile

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

...