Xcode构建失败,原因是Undefined symbol: __swift_FORCE_LOAD_$_swiftUIKit。

35

我在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 beta 2 (11M337n)
    • Swift 5 模式
8个回答

129

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

对于XCode版本12.0.1(12A7300),

我只需要在项目的构建阶段中的Link Binary with Libraries中添加libswiftWebKit.tbd,然后构建就成功了。

参见下面的图片: 输入图像描述


2
在我的 Xcode 13 上可以工作,谢谢。 - Serhii Onishchenko
4
libSwiftWebKit.tbd添加到“链接二进制文件”后,您可以立即将其删除。这应该会将“$(SDKROOT)/usr/lib/swift”添加到“构建设置”中的“库搜索路径”。这样也不会破坏与Xcode 11的向后兼容性。 - Dror Bar
1
这也解决了我在构建Expo裸工作流React Native项目时遇到的问题。如果您在较新版本的XCode上构建React Native时遇到问题,绝对值得注意。 - Falgantil
1
这对我有用,但破坏了 iOS13 及以下版本的构建。将状态设置为 Optional 允许我的 iOS13 和以下版本构建正常工作。Github 线程链接:link - makenova
谢谢,这解决了我的M1和Xcode 13问题,构建正在工作。 - Syed Amir Ali
我添加了这个功能,但是应用在IOS 12.5.5版本上无法工作。 - Harleen Kaur Arora

9

打开Xcode,在项目名称中,右键单击并选择“新建文件...”

选择Swift文件,然后单击下一步

选择项目目标并完成设置

在下一个屏幕中选择“创建桥接头文件”-请确保进行桥接。

将swift文件保留在那里以备将来在模拟器中运行。


感谢您注册账户来回答我的问题!在Stack Overflow上,我们喜欢每个答案都是解决问题的不同方式。我认为您的答案与Anh的相同,但您提供了更详细的步骤。 - Ky -
这是对我有用的解决方案,但前提是我也为测试目标创建了一个桥接头文件。我没有看到任何指示,只能通过反复试验才找到它。 - Jesús Cruz

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

1
对于我的特定问题,这个解决方案不适用,因为它已经是一个带有桥接头的 Swift 项目。不过,这个答案可能会帮助到遇到类似错误信息的其他人。 - Ky -
2
我的错误是在将Xcode更新到13版本后,构建失败,出现了“Undefined symbol: _swift_FORCE_LOAD$_swiftDataDetection”。而这个解决方案起作用了。谢谢。 - Arosha

3

对我来说,我曾在使用Xcode 12时遇到过Swift库链接错误的问题,解决方法是将"$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)"和"$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)"添加到"Build Settings"的"Library Search Paths"中。


2

正如警告所示,提示“未找到目录”,似乎Xcode不喜欢在其捆绑文件名中有空格。

我将其从Xcode 11.0-Beta.2.app重命名为Xcode-11.0-Beta.2.app,现在它可以很好地构建了。


2

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


1

由于"$(TOOLCHAIN_DIR)/usr/lib"中缺少Swift文件夹,我不得不完全重新安装Xcode。


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接