【发布时间】: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
注意: 关于相同的错误消息,有很多类似的问题。但他们都没有帮助我的案子。
一些我已经尝试过但不起作用的东西:
我已尝试将 dylib 文件添加到 Embedded Binaries 中,如下所示:dyld: Library not loaded, Reason: image not found
我还确保已包含正确的 lib 搜索路径,并在 Library Search Path 中正确设置,如下所示: Eclipse on Mac dyld: Library not loaded: Image not found
所有 openni2 和 libfreenect 相关的 dylib 都可以顺利找到。
这是我的设置图片:
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