【问题标题】:OSX terminal app, fails to load dylib fileOSX 终端应用程序,无法加载 dylib 文件
【发布时间】:2015-06-27 07:01:25
【问题描述】:

我创建了一个 dylib 文件。成功将其添加到一个终端(通过 Xcode 基于控制台的应用程序)。当我通过 Xcode 运行应用程序时,它们会加载 dylib,并且其中的所有方法都可以正常工作。

问题是当我运行 Consols 应用程序(Unix 可执行文件)时,它找不到 dylib 并引发以下错误。

DS-Anoopkumar-v:~ anoopvaidya$ /Users/anoopvaidya/Library/Developer/Xcode/DerivedData/Worker-dfytfqadwmzqmvesrzqeartqcggx/Build/Products/Debug/Worker; exit; dyld: Library not loaded: @executable_path/../libDownloader.dyli
Referenced from: /Users/anoopvaidya/Library/Developer/Xcode/DerivedData/Worker-dfytfqadwmzqmvesrzqeartqcggx/Build/Products/Debug/Worker
Reason: image not found Trace/BPT trap: 5 logout

[Process completed]

请告诉我我在这里缺少什么,我们将不胜感激。

【问题讨论】:

  • 好的,libDownloader.dylib 是否存在于预期的目录中(如您所见是可执行文件的父目录)?
  • @trojanfoe:我解决了这个问题。我发现了问题,将其发布为答案。

标签: macos terminal dylib dyld


【解决方案1】:

在 Build Setting 的“Dynamic Library Install Name”中,我将“@executable_path/.../Framework/libILDownloader.dylib”替换为“@executable_path/libILDownloader.dylib”,并且成功了。

感谢How to use dylib in Mac OS X (C++)这个回答,帮助我理解了

【讨论】:

  • 这还不是全部。首先,您必须有一个将libILDownloader.dylib 复制到与可执行文件相同的文件夹的脚本,因为默认情况下,每个 Xcode 目标都构建到一个单独的文件夹中。其次,在发布/安装方面,.dylib 可能希望使用/usr/local/lib,因此您应该对调试和发布版本使用不同的设置。拥有一个需要安装第 3 方 .dylib 才能工作的命令行可执行文件是不寻常的(而且很繁琐),所以最好在这个库中静态链接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-19
  • 2019-10-03
  • 1970-01-01
  • 2012-08-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多