gpt4 book ai didi

swift - 在 Swift 命令行工具中使用 CocoaLumberjack 会抛出运行时错误 : dyld: Library not loaded: @rpath/libswiftAppKit. dylib

转载 作者:行者123 更新时间:2023-11-28 12:44:55 26 4
gpt4 key购买 nike

我有一个用 Swift 编写的命令行工具。我在其他相关应用程序中使用 Lumberjack,所以我想让它在这个应用程序中运行。命令行工具不导入 AppKit。根据 DDTTYLogger.h 文件,如果定义了 DD_CLI,则自定义颜色定义。 (CLIColor.h/m) 是导入的,而不是 AppKit/NSColor.h,所以看起来我不应该收到错误。

到目前为止,我已经尝试将 –DDD_CLI 添加到 Swift 编译器,其他 Swift 标志。我还尝试将 CLIColor.m 添加到构建中。我不知所措......任何人都有这方面的经验,或者我可以尝试其他一些事情吗?

感谢您的反馈。

最佳答案

我使用运行在 OS X 10.11.6 上的 Xcode 8 beta 遇到了这个问题,虽然我遇到了不同的具体问题,但调试方法对所有情况都是相同

otool 命令可用于查看确切指示链接器查找库文件的位置及其名称。

对我来说,otool -l {executable_path} 表明它正在寻找 10.12 (Sierra) 中引入的 /System/Library/PrivateFrameworks/swift 中的文件.因为我运行的是 10.11.6,所以这是一个亮点。 (以及 Xcode 8 beta 中的一个已知错误)

查看 otool 输出,有两件事要看:

  1. LC_LOAD_DYLIB 命令,显示要包含的库的名称。
    加载命令可能会显示文件的绝对路径,或者可以使用 @rpath/ 作为前缀,这是用于查找文件的快捷方式。
  2. LC_RPATH 显示以 @rpath/ 为前缀的库名称的搜索路径。

您可以通过在build设置的 Other Linker Flags 字段中包含 -rpath {absolute_path_to_files} 来更改 LC_RPATH(作为 < strong>temporary work-around 让你再次编译)。对我而言,这意味着将 rpath 设置为相应 SDK 文件中的库文件,而不是 /System。出于多种原因,这样做充满危险。所以不要忘记撤消它。

如果您只是在构建层次结构方面遇到问题,则可以使用更轻松的方法。使用 otool 您可以看到实际发生了什么,因此您可以智能地修改 Runpath Search Paths build设置以跳转一个或两个目录并查看它如何影响链接器的输出。

关于swift - 在 Swift 命令行工具中使用 CocoaLumberjack 会抛出运行时错误 : dyld: Library not loaded: @rpath/libswiftAppKit. dylib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38364320/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com