Xcode 由于未定义的符号,构建失败:__swift_FORCE_LOAD_$_swiftUIKit

Xcode build fails due to Undefined symbol: __swift_FORCE_LOAD_$_swiftUIKit

我在 Xcode 11 中创建了一个全新的项目(一个 iOS 具有 SwiftUI 的单视图项目)并启用 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)

环境

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

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

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

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

对于 XCode 版本 12.0.1 (12A7300),

我刚刚将 libswiftWebKit.tbd 添加到

Link 带库的二进制文件(来自项目,构建阶段

构建成功。

见下图:

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

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

对我来说,我曾经遇到 swift 库 Xcode 12 的 link 错误,我通过添加 "$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)”和“$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)”进入“Build Settings”的“Library Search Paths”

移除

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

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

我不得不完全重新安装 Xcode,因为在“$(TOOLCHAIN_DIR)/usr/lib”

中缺少 swift 文件夹