通过 CocoaPods 添加 AudioKit 后链接错误
Linking Errors after adding AudioKit via CocoaPods
我开发了一个简单的应用程序,可以在图表中显示实时音频信号。
我通过 CocoaPods 安装了 AudioKit
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '13.4'
pod 'AudioKit', '=5.0.b1'
一切正常,现在我想将此功能集成到其他应用程序中。
这就是我的问题开始的地方。一旦我将 AudioKit pod 广告到我的其他项目,我就会收到链接错误。我什至还没有在我的代码中使用 AudioKit。我只是编辑我的 Podfile 并使用 pod update
.
这是我得到的:
Undefined symbols for architecture x86_64:
"_swiftoverride_class_getSuperclass(swift::TargetMetadataswift::InProcess const*)", referenced from:
swift::swift50override_conformsToProtocol(swift::TargetMetadataswift::InProcess const*, swift::TargetProtocolDescriptorswift::InProcess const*, swift::TargetWitnessTableswift::InProcess const* ()(swift::TargetMetadataswift::InProcess const, swift::TargetProtocolDescriptorswift::InProcess const*)) in libswiftCompatibility50.a(ProtocolConformance.cpp.o)
"swift::swift51override_conformsToSwiftProtocol(swift::TargetMetadataswift::InProcess const*, swift::TargetProtocolDescriptorswift::InProcess const*, llvm::StringRef, swift::TargetProtocolConformanceDescriptorswift::InProcess const* ()(swift::TargetMetadataswift::InProcess const, swift::TargetProtocolDescriptorswift::InProcess const*, llvm::StringRef))", referenced from:
_Swift50Overrides in libswiftCompatibility50.a(Overrides.cpp.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
从我的 Podfile 中删除 AudioKit 并更新后,一切又恢复正常了。
我唯一使用的另一个 pod 是 this SideMenu。
我的规格:
MacBook Pro 13(2019,Big Sur 11.1,i5 1.4 GHz)
Xcode12.3 (12C33)
CocoaPods 1.9.1
检查目标设置中的构建阶段选项卡。
如果您看到一个 运行-script 阶段,其中的脚本会从您的框架中删除架构(这很常见),请确保它 运行s 在“嵌入 Pods 框架”构建阶段之前.
另外,附上脚本代码
if [[ "$CONFIGURATION" == "Release" ]]; then
[Original script]
fi
您可能想尝试切换到版本 5.0.b2 而不是 b1 - 它是最近更新的,旧的二进制文件可能与 Xcode 12.
有问题
您还应该升级到最新的 CocoaPods - 需要版本 1.10 或更高版本才能正确支持 XCFramework,这是 AudioKit pod 使用的。
我开发了一个简单的应用程序,可以在图表中显示实时音频信号。
我通过 CocoaPods 安装了 AudioKit
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '13.4'
pod 'AudioKit', '=5.0.b1'
一切正常,现在我想将此功能集成到其他应用程序中。
这就是我的问题开始的地方。一旦我将 AudioKit pod 广告到我的其他项目,我就会收到链接错误。我什至还没有在我的代码中使用 AudioKit。我只是编辑我的 Podfile 并使用 pod update
.
这是我得到的:
Undefined symbols for architecture x86_64: "_swiftoverride_class_getSuperclass(swift::TargetMetadataswift::InProcess const*)", referenced from: swift::swift50override_conformsToProtocol(swift::TargetMetadataswift::InProcess const*, swift::TargetProtocolDescriptorswift::InProcess const*, swift::TargetWitnessTableswift::InProcess const* ()(swift::TargetMetadataswift::InProcess const, swift::TargetProtocolDescriptorswift::InProcess const*)) in libswiftCompatibility50.a(ProtocolConformance.cpp.o) "swift::swift51override_conformsToSwiftProtocol(swift::TargetMetadataswift::InProcess const*, swift::TargetProtocolDescriptorswift::InProcess const*, llvm::StringRef, swift::TargetProtocolConformanceDescriptorswift::InProcess const* ()(swift::TargetMetadataswift::InProcess const, swift::TargetProtocolDescriptorswift::InProcess const*, llvm::StringRef))", referenced from: _Swift50Overrides in libswiftCompatibility50.a(Overrides.cpp.o) ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
从我的 Podfile 中删除 AudioKit 并更新后,一切又恢复正常了。
我唯一使用的另一个 pod 是 this SideMenu。
我的规格:
MacBook Pro 13(2019,Big Sur 11.1,i5 1.4 GHz)
Xcode12.3 (12C33)
CocoaPods 1.9.1
检查目标设置中的构建阶段选项卡。 如果您看到一个 运行-script 阶段,其中的脚本会从您的框架中删除架构(这很常见),请确保它 运行s 在“嵌入 Pods 框架”构建阶段之前.
另外,附上脚本代码
if [[ "$CONFIGURATION" == "Release" ]]; then
[Original script]
fi
您可能想尝试切换到版本 5.0.b2 而不是 b1 - 它是最近更新的,旧的二进制文件可能与 Xcode 12.
有问题您还应该升级到最新的 CocoaPods - 需要版本 1.10 或更高版本才能正确支持 XCFramework,这是 AudioKit pod 使用的。