0

我尝试使用的库是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 都可以毫无问题地找到。

以下是我的设置图片:

项目层次结构视图

图书馆搜索路径

XCode v:9.3.1 Mac 操作系统 v:10.13.4

- - 更新 - - -

我在 Build Phase 中添加了一些Copy Files设置,截图在这里,包括我的 include 和 lib 文件夹中的所有内容。这并没有解决我的问题()。然后,在构建之后,我去myapp.app/Contents/MacOS运行./myapp构建。它神奇地运行并找到了所有库!我不太明白为什么,希望有人能解释一下。

4

1 回答 1

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 在编译后更改 dylib 路径

另一个注意事项:根据您的屏幕截图,OpenNI 似乎是从/usr/local/opt/openni2(猜测 Homebrew 符号链接)链接的。这将在您的机器上工作,但不能在另一台 Mac 上工作,除非您也通过自制软件在其上安装 OpenNI2(否则,如果 OpenNI 库被复制到可执行文件,您也可以考虑为这些设置可执行相对路径)。

于 2018-05-30T18:18:49.760 回答