【问题标题】:dyld: Library not loaded: libNiTE2.dylib....Reason: image not founddyld:库未加载:libNiTE2.dylib....原因:找不到图像
【发布时间】:2018-05-29 01:55:02
【问题描述】:

我尝试使用的库是 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 操作系统 v: 10.13.4

----更新-----

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

【问题讨论】:

  • 我想知道可执行文件最后链接的库路径是什么(如果它是你在 Xcode 中看到的)。它是否在 Xcode 中运行,但不是在双击时或者直接在 Xcode 中崩溃?如果你运行:otool -L /Users/yangwang/Documents/cinder_projects/basic/xcode/build/Debug/basic.app/Contents/MacOS/basic | grep nite,你会得到什么?
  • @GeorgeProfenza 我添加了一些更新。他们会为您提供更多信息吗?
  • otool -L 对您的可执行文件的输出是什么?我的预感是它与.dylib 的引用方式有关(如果它是绝对路径,则使用@rpath、@executable_path 等)。你可以在终端中运行上面的长命令命令并粘贴输出吗?
  • @GeorgeProfenza 结果为空。没有什么适合过滤器nite
  • 没有过滤器的输出是什么样的? (otool -L /Users/yangwang/Documents/cinder_projects/basic/xcode/build/Debug/basic.app/Contents/MacOS/basic)

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


【解决方案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 中应该有类似的视图(某些变量可能不同)。

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

【讨论】:

  • 我完全理解这些步骤的意图。看起来很有希望。但它没有解决它。这是一张图片,显示otool 已修改,libNiTE2.dylib 已到位。 :ibb.co/dSnzSd 在 xcode 中运行时相同的旧错误消息。然后双击 .app 什么也不显示。
  • 感谢您试一试。我以为这样就可以解决了。您能告诉我您使用的是哪个版本的 cinder/xcode/OpenNI2 cinder 块吗? (这些天我很忙,但在某些时候最好弄清楚)
  • cinder 版本:0.9.1,不使用任何 openni2 cinder 块。直接从structure.io/openni下载openni2的最新版本
猜你喜欢
  • 2015-01-14
  • 2012-11-13
  • 2013-12-25
  • 2012-03-20
  • 2013-07-16
  • 1970-01-01
  • 1970-01-01
  • 2020-05-12
  • 2020-01-28
相关资源
最近更新 更多