如何解决创建 iOS 框架时未定义符号 OBJC_CLASS_$
我正在尝试构建一个 iOS 框架,为此,我使用了一些依赖项,而单独构建框架项目时没有出现错误,当我在演示应用程序中使用 CocoaPods 进行安装时,我收到以下错误 {{1 }}。
这就是我在框架中的内容:
Podfile
Undefined symbol: _OBJC_CLASS_$_DFPRequest
MyLib.podspec
platform :ios,'10.0'
use_frameworks!
target 'mylib' do
pod 'PrebidMobile'
pod 'Google-Mobile-Ads-SDK'
pod 'mopub-ios-sdk'
pod 'GoogleAds-IMA-iOS-SDK'
end
Banner.swift
Pod::Spec.new do |s|
...
s.platform = :ios,"10.0"
s.swift_version = '5.0'
s.xcconfig = {
:LIBRARY_SEARCH_PATHS => '$(inherited)',:OTHER_CFLAGS => '$(inherited)',:OTHER_LDFLAGS => '$(inherited)',:HEADER_SEARCH_PATHS => '$(inherited)',:FRAMEWORK_SEARCH_PATHS => '$(inherited)'
}
s.framework = [
'CoreTelephony','SystemConfiguration','UIKit','Foundation'
]
s.subspec 'core' do |core|
core.source_files = 'Source/**/*.{h,m,swift}'
end
s.dependency 'PrebidMobile'
s.dependency 'Google-Mobile-Ads-SDK'
s.dependency 'mopub-ios-sdk'
s.dependency 'GoogleAds-IMA-iOS-SDK'
end
现在在 appdemo 中,我有
Podfile
import UIKit
import PrebidMobile
import GoogleMobileAds
import MoPub
enum BannerFormat: Int {
case html
case vast
}
class BannerController: UIViewController,GADBannerViewDelegate,MPAdViewDelegate {
@IBOutlet var appBannerView: UIView!
@IBOutlet var adServerLabel: UILabel!
var bannerFormat: BannerFormat = .html
var adServerName: String = ""
private var adUnit: AdUnit!
private let amRequest = DFPRequest()
private var amBanner: DFPBannerView!
private var mpBanner: MPAdView!
override func viewDidLoad() {
super.viewDidLoad()
adServerLabel.text = adServerName
}
override func viewDiddisappear(_ animated: Bool) {
adUnit?.stopAutoRefresh()
}
func viewControllerForPresentingModalView() -> UIViewController! {
return self
}
}
所以,只要运行 platform :ios,'10.0'
use_frameworks!
target 'appdemo (iOS)' do
pod 'MyLib',:git => 'https://...mylib.git'
end
并构建 appdemo,我就已经收到了错误。
由于单独运行框架有效,我在这里做错了什么,安装框架不起作用?
LD /Users/user/Library/Developer/Xcode/DerivedData/appdemo-gmoqpiaozrywmeguhfldbwybeebb/Build/Products/Debug-iphonesimulator/mylib/mylib.framework/mylib 正常(在项目“Pods”的目标“mylib”中) cd /Users/user/appdemo/Pods /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -target x86_64-apple-ios10.0-simulator -dynamiclib -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhonesimulator.platform/Developer/SDKs/iPhonesimulator14.3.sdk -L/Users/user/Library/Developer/Xcode/DerivedData/appdemo-gmoqpiaozrywmeguhfldbwybeebb/Build/Products/Debug-iphonesimulator/mylib -F/Users/user/Library/Developer/Xcode/DerivedData/appdemo-gmoqpiaozrywmeguhfldbwybeebb/Build/Products/Debug-iphonesimulator/mylib -F/Users/user/Library/Developer/Xcode/DerivedData/appdemo-gmoqpiaozrywmeguhfldbwybeebb/Build/Products/Debug-iphonesimulator/GoogleUtilities -F/Users/user/Library/Developer/Xcode/DerivedData/appdemo-gmoqpiaozrywmeguhfldbwybeebb/Build/Products/Debug-iphonesimulator/PrebidMobile -F/Users/user/Library/Developer/Xcode/DerivedData/appdemo-gmoqpiaozrywmeguhfldbwybeebb/Build/Products/Debug-iphonesimulator/PromisesObjC -F/Users/user/Library/Developer/Xcode/DerivedData/appdemo-gmoqpiaozrywmeguhfldbwybeebb/Build/Products/Debug-iphonesimulator/mopub-ios-sdk -F/Users/user/Library/Developer/Xcode/DerivedData/appdemo-gmoqpiaozrywmeguhfldbwybeebb/Build/Products/Debug-iphonesimulator/nanopb -F/Users/user/appdemo/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAdsFramework-Current -F/Users/user/appdemo/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAdsFramework-Current/GoogleMobileAds.xcframework/ios-arm64_armv7 -F/Users/user/appdemo/Pods/Google-Mobile-Ads-SDK/Frameworks/GoogleMobileAdsFramework-Current/GoogleMobileAds.xcframework/ios-arm64_i386_x86_64-simulator -F/Users/user/appdemo/Pods/GoogleAds-IMA-iOS-SDK -F/Users/user/appdemo/Pods/GoogleAppMeasurement/Frameworks -F/Users/user/appdemo/Pods/GoogleUserMessagingPlatform/Frameworks/Release -F/Users/user/appdemo/Pods/GoogleUserMessagingPlatform/Frameworks/Release/UserMessagingPlatform.xcframework/ios-arm64_armv7 -F/Users/user/appdemo/Pods/GoogleUserMessagingPlatform/Frameworks/Release/UserMessagingPlatform.xcframework/ios-arm64_i386_x86_64-simulator -filelist /Users/user/Library/Developer/Xcode/DerivedData/appdemo-gmoqpiaozrywmeguhfldbwybeebb/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/mylib.build/Objects-normal/x86_64/mylib.LinkFileList -install_name @rpath/mylib.framework/mylib -Xlinker -rpath -Xlinker /usr/lib/swift -Xlinker -rpath -Xlinker @executable_path/Frameworks -Xlinker -rpath -Xlinker @loader_path/Frameworks -dead_strip -Xlinker -object_path_lto -Xlinker /Users/user/Library/Developer/Xcode/DerivedData/appdemo-gmoqpiaozrywmeguhfldbwybeebb/Build/Intermediates.noindex/Podsimiphone/build/ .build/Objects-normal/x86_64/mylib_lto.o -Xlinker -export_dynamic -Xlinker -no_deduplicate -Xlinker -objc_abi_version -Xlinker 2 -fobjc-arc -fobjc-link-runtime -L/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/ iphone模拟器 -L/usr/lib/swift -Xlinker -add_ast_path -Xlinker /Users/user/Library/Developer/Xcode/DerivedData/appdemo-gmoqpiaozrywmeguhfldbwybeebb/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/mylib.build/Objects -normal/x86_64/mylib.swiftmodule -framework AVFoundation -framework AdSupport -framework AudioToolBox -framework CFNetwork -framework CoreFoundation -framework CoreGraphics -framework CoreMedia -framework CoreTelephony -framework CoreVideo -framework Foundation -framework GoogleInteractiveMediaAds -framework MediaPlayer -framework MessageUI -framework MobileCoreServices -framework QuartzCore -framework Security -framework StoreKit -framework SystemConfiguration -framework UIKit -framework WebKit -weak_framework AdSupport -weak_framework JavaScriptCore -weak_framework SafariServices -weak_framework StoreKit -weak_framework WebKit -framework CoreTelephony -framework Foundation -framework MoPub -framework System Prebid UIKit -Xlinker -no_adhoc_codesign -compatibility_version 1 -current_version 1 -Xlinker -dependency_info -Xlinker /Users/user/Library/Developer/Xcode/DerivedData/appdemo-gmoqpiaozrywmeguhfldbwybeebb/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/mynormal.build/ /x86_64/mylib_dependency_info.dat -o /Users/user/Library/Developer/Xcode/DerivedData/appdemo-gmoqpiaozrywmeguhfldbwybeebb/Build/Products/Debug-iphonesimulator/mylib/mylib.framework/mylib
架构 x86_64 的未定义符号:
“OBJC_CLASS$_DFPRequest”,引用自:
Banner.o ld 中的 objc-class-ref:找不到架构 x86_64 clang 的符号:错误:链接器命令失败,退出代码
1(使用 -v 查看调用)
解决方法
因为单独运行框架是可行的
我不是 100% 确定我理解这一点;你不能单独“运行”一个框架。如果您的意思是框架构建,那并不奇怪;缺少的符号来自不同的库,在您的框架最终链接到应用程序之前不必解决这个问题。
我在这里做错了什么,安装框架不起作用?
很难确定,但我敢打赌这可能与您应用的 Podfile 有关:
pod 'MyLib',:git => 'https://...mylib.git'
MyLib
的 podspec 应该位于该存储库的根目录中,因此请检查 URL 是否指向您认为它存在的位置,MyLib.podspec
是否位于该存储库的根目录中,以及podspec 是正确的。
运行 pod install
然后运行 pod update
(在故障排除时单独运行它们是一个好主意,这样您就可以确定哪个产生了任何错误或其他输出)。打开应用程序的工作区并找到定义 DFPRequest
类的文件。如果找不到,则需要深入研究 Pod 设置以找出问题所在。如果您确实找到了该文件,那么您的 pod 设置可能没问题;相反,请检查您的项目配置并确保该文件确实包含在您尝试构建的目标中。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。