Библиотека не загружена: ../../Bin/Release/libXnVNite_1_4_0.dylib

#opencv #qt-creator #kinect #dyld #openni

#opencv #qt-создатель #kinect #dyld #openni

Вопрос:

Когда я делаю проект с openni. И у меня проблема, когда я создаю свой makefile.

 Starting /Users/olivierjanssens/Documents/ICT/Master/Thesis/Code/mysuperdemo/qtcreator-  build/mysuperdemo...
dyld: Library not loaded: ../../Bin/Release/libXnVNite_1_4_0.dylib
Referenced from: /Users/olivierjanssens/Documents/ICT/Master/Thesis/Code/mysuperdemo/qtcreator-build/mysuperdemo
Reason: image not found
The program has unexpectedly finished.
  

Мой файл cmake

  cmake_minimum_required(VERSION 2.6)

 PROJECT(mysuperdemo)

 SET(NESTK_USE_OPENNI 1)
 ADD_SUBDIRECTORY(nestk)
 ## nestk/UseNestk.cmake.in defines variable to use nestk.
 ## It itself includes nestk/deps/cmake/UseEmbeddedNestkDeps.cmake that
 ## contains most of the cmake find packages commands.
 INCLUDE("${nestk_BINARY_DIR}/UseEmbeddedNestk.cmake")

ADD_EXECUTABLE(mysuperdemo mysuperdemo.cpp)
TARGET_LINK_LIBRARIES(mysuperdemo nestk)
  

это генерирует мой makefile, который я затем создаю.

Файл, упомянутый в ошибке, отсутствует в моей системе ( ../../Bin/Release/libXnVNite_1_4_0.dylib). Хотя файл libXnVNite.dylib есть, но его нет в папке ../../Bin/Release/, которой не существует. Я работаю на osx 10.7

есть идеи, как я могу это исправить?

Ответ №1:

Чтобы решить эту проблему, я переименовал существующий файл libXnVNite.dylib в libXnVNite_1_4_0.dylib и создал папку /bin/ release относительно моего приложения и поместил в нее файл. Это работает, но я думаю, что это далеко не хорошее решение.

Ответ №2:

Более элегантным решением было бы создать символические ссылки в этой относительной папке. ../../Bin/Release/libXnVNite_1_4_0.dylib -> /usr/lib/libXnVNite.dylib

и так далее для всех проблемных библиотек.

Это сработало однажды для меня, но теперь это просто работает больше…

Еще более элегантным решением было бы использовать install_name_tool для изменения этих относительных путей на реальные.