微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

创建 iOS 框架时未定义符号 OBJC_CLASS_$

如何解决创建 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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?