dyld:未加载库:libNiTE2.dylib ....原因:找不到图像

时间:2018-05-29 01:55:03

标签: c++ xcode linker-errors openni nite

我尝试使用的库是 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相关的dylib都没有问题。

以下是我的设置图片:

project hierarchy view

library search path

XCode v:9.3.1 Mac os v:10.13.4

---- ----- UPDATE

我在构建阶段screenshot here中添加了一些复制文件设置,包括include和lib文件夹中的所有内容。这并没有解决我的问题(尚未)。然后,在构建之后,我去了myapp.app/Contents/MacOS并使用./myapp来运行构建。它神奇地运行并找到了所有的库!我不太明白为什么,希望有人能解释。

1 个答案:

答案 0 :(得分:0)

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(猜测自制语法符号链接)相关联。这将在您的机器上运行,但不能在另一台Mac上运行,除非您也通过自制程序安装OpenNI2(否则,如果OpenNI库被复制到可执行文件,您可以考虑为这些设置可执行的相对路径)。