【问题标题】:Xcode build fails due to Undefined symbol: __swift_FORCE_LOAD_$_swiftUIKit由于未定义的符号,Xcode 构建失败:__swift_FORCE_LOAD__$_swiftUIKit
【发布时间】:2019-11-13 07:06:54
【问题描述】:

我在 Xcode 11 中创建了一个全新的项目(一个带有 SwiftUI 的 iOS 单视图项目)并启用 Mac 作为目标设备。没有做任何其他事情,我尝试构建,我得到这个错误:

ld: warning: directory not found for option '-L/Applications/Xcode'
ld: warning: directory not found for option '-L11.0-Beta.2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/uikitformac'
ld: warning: directory not found for option '-L/Applications/Xcode'
ld: warning: directory not found for option '-L11.0-Beta.2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/uikitformac'
ld: warning: Could not find or use auto-linked library 'swiftUIKit'
Undefined symbols for architecture x86_64:
  "__swift_FORCE_LOAD_$_swiftUIKit", referenced from:
      __swift_FORCE_LOAD_$_swiftUIKit_$_MyProject in AppDelegate.o
      __swift_FORCE_LOAD_$_swiftUIKit_$_MyProject in SceneDelegate.o
      __swift_FORCE_LOAD_$_swiftUIKit_$_MyProject in ContentView.o
     (maybe you meant: __swift_FORCE_LOAD_$_swiftUIKit_$_MyProject)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

环境

  • macOS 10.15 Catalina Beta (19A487l)
  • Xcode 11.0 测试版 2 (11M337n)
    • Swift 5 模式

【问题讨论】:

    标签: xcode xcode11


    【解决方案1】:

    更新:这也适用于 XCode 版本 13.0 (13A233)。

    对于 XCode 版本 12.0.1 (12A7300),

    我刚刚将 libswiftWebKit.tbd 添加到

    将二进制文件与库链接(来自项目,构建阶段

    构建成功。

    见下图:

    【讨论】:

    • 非常感谢兄弟,你拯救了我的一天。
    • 使用 Xcode 13 为我工作,谢谢
    • 是的,它的工作,谢谢
    • 截至 2021 年 9 月 27 日,这应该是公认的答案。
    • libSwiftWebKit.tbd添加到Link Binary with Libraries后,可以立即删除。它应该在Build Settings 中将$(SDKROOT)/usr/lib/swift 添加到Library Search Paths。这样它也不会破坏与 Xcode 11 的向后兼容性。
    【解决方案2】:

    使用 Xcode 创建一个 Empty Swift 文件,例如命名为 test.swift,然后尝试再次运行

    【讨论】:

    • 对于我的特定问题,此解决方案不适用,因为它已经是一个带有桥接头的快速项目。不过,这个答案可能会帮助其他有类似错误消息的人。
    • 我的错误是Undefined symbol: __swift_FORCE_LOAD_$_swiftDataDetection,在将 Xcode 更新到 13 后构建失败。这个解决方案奏效了。谢谢
    【解决方案3】:

    转到Xcode,在项目名称中,右键单击并单击“新建文件...” 选择 Swift File 并点击 Next 选择项目目标并完成 在下一个屏幕中选择“创建桥接头” - 确保桥接。

    保留 swift 文件以备将来运行模拟器。

    【讨论】:

    • 感谢您注册帐户只是为了回答我的问题!在 Stack Overflow 上,我们希望每个答案都是解决问题的单独方法。我觉得你的答案和Anh's一样,但是你提供了更详细的步骤
    • 这是对我有用的解决方案,但前提是我也为测试目标创建了桥接头。我没有看到任何迹象,只能通过反复试验来实现。
    【解决方案4】:

    对我来说,我曾经在使用 Xcode 12 的 swift 库时遇到链接错误,我通过添加 "$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)" 和 " $(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)”进入“构建设置”的“库搜索路径”

    【讨论】:

      【解决方案5】:

      正如directory not found 警告所暗示的那样,Xcode 似乎不喜欢在其包的文件名中包含空格。

      我将它从 Xcode 11.0-Beta.2.app 重命名为 Xcode-11.0-Beta.2.app,现在它构建得很好。

      【讨论】:

        【解决方案6】:

        当我不小心将XCTest 导入到应用程序目标时,我遇到了这个错误。直到我检查了 git diff 才注意到它。如果您遇到此问题,请确保您没有导出不适当的内容

        【讨论】:

          【解决方案7】:

          删除

          “构建设置”的“库搜索路径”中的“$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)”

          【讨论】:

            猜你喜欢
            • 2021-10-20
            • 1970-01-01
            • 2021-06-27
            • 2021-10-23
            • 2021-02-18
            • 2017-02-09
            • 2015-09-05
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多