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)
环境
- macOS 10.15 卡特琳娜测试版 (19A487l)
- Xcode 11.0 测试版 2 (11M337n)
- Swift 5 模式
正如警告 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 文件夹
我在 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)
环境
- macOS 10.15 卡特琳娜测试版 (19A487l)
- Xcode 11.0 测试版 2 (11M337n)
- Swift 5 模式
正如警告 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 文件夹