gpt4 book ai didi

swift - 使用关联的 Swift 库构建 Swift 命令行工具时,为什么要嵌入框架?

转载 作者:行者123 更新时间:2023-11-28 08:09:10 24 4
gpt4 key购买 nike

我构建了一个简单的 Swift 项目,该项目生成一个 macOS 命令行工具并具有关联的自定义 Swift 库 (.dylib),但是在编译和运行它时会出现许多警告形式:

objc[9532]: Class _SwiftNativeNSEnumeratorBase is implemented in both /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx/libswiftCore.dylib (0x100cca3f0) and /Users/.../Build/Products/Debug/MyTool (0x1003e84c0). One of the two will be used. Which one is undefined.

扫描生成的 MyTool 二进制文件显示它包含该函数,所以我假设它是通过静态链接以某种方式嵌入的。 .dylib 期望它作为共享库存在,因此似乎这就是重复出现的地方。

我在项目和目标级别尝试了很多设置,但除了显式嵌入选项之外,似乎没有一个能控制将诸如核心框架之类的东西作为静态库嵌入。

对于这两个目标,Always Embed Swift Libraries 都设置为“No”。清理和构建仍然会产生重复警告。

最佳答案

看来必须更改一些内容才能解决此问题:

  • 设置运行时搜索路径以包括/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx 或适当的库集。这些似乎包括比默认位置中存在的 Swift 库版本更新的版本。
  • 与标准库的链接设置为“否”。
  • 通过将库从 .../usr/lib/swift/macos 位置拖动到命令行目标的“常规”选项卡上,手动指定要链接到的库。 Swift 项目需要 libswiftCore.dylib

由于 C 绑定(bind),我还必须包含 libc,但默认的 (libc.tbc) 就足够了。

关于swift - 使用关联的 Swift 库构建 Swift 命令行工具时,为什么要嵌入框架?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44168539/

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