【问题标题】:Errors link libraries firebase - "_OBJC_CLASS_$_FIRAnalytics", referenced from错误链接库 firebase - “_OBJC_CLASS_$_FIRAnalytics”,引用自
【发布时间】:2021-06-10 13:57:56
【问题描述】:

我使用 QT Creator(4.1.1) 和 Qt Framework(5.14.1) 编写跨平台应用程序。我想启用 firebase,所以我下载了 firebase C++ sdk(最新版本):link 然后我尝试将它连接到 *.pro - 文件中的我的项目。选项一 - 使用帮助框架:

QMAKE_LFLAGS += -F$$PWD/fr_universal/ -ObjC \
-framework StoreKit \
-framework firebase_analytics \
-framework firebase

选项二 - 借助静态库:

LIBS += -ObjC -L$$PWD/universal/ -lfirebase_app -lfirebase_analytics

我还连接了包含文件 firebase 并编写了简单的示例代码:

#include <firebase/analytics.h>
#include <firebase/app.h>

int main(int argc, char *argv[])
{
    firebase::App* contextFirebase(nullptr);
    return 0;
}

编译还是失败了。 错误:

Undefined symbols for architecture arm64:
  "_OBJC_CLASS_$_FIRAnalytics", referenced from:
      objc-class-ref in firebase_analytics(analytics_ios.mm.o)
  "_OBJC_CLASS_$_FIRApp", referenced from:
      objc-class-ref in firebase(app_ios.mm.o)
  "_OBJC_CLASS_$_FIROptions", referenced from:
      objc-class-ref in firebase(app_ios.mm.o)
  "_OBJC_CLASS_$_FIRConfiguration", referenced from:
      objc-class-ref in firebase(log_ios.mm.o)

操作系统:macOS Big Sur 11.1

附:

  1. firebase sdk 的路径正确

  2. 我不使用 Cocoapods

  3. 我尝试为 XCode 12.3 制作简单的示例 - 并得到相同的错误

  4. 我使用帮助命令行工具 (lipo -info) 检查静态 lib firebase。输出:

    是:armv7 i386 x86_64 arm64

【问题讨论】:

    标签: c++ ios firebase macos qt


    【解决方案1】:

    最重要的一点是,C++ SDK 不是独立存在的,它依赖于 iOS SDK 来运行。您可以在 this page 看到所需框架的细分,或者您可以查看 readme.md 文件以查看所需的依赖项,binary C++ SDKios_pod/Podfile 以查看所需的版本。

    使用 FIR 前缀,您似乎只是缺少 Objective-C SDK 框架。如果你愿意使用 CocoaPods(我知道这在 QMake 项目中可能很难,here's my solution for CMake),它或多或少会自己处理。

    相反,您可以尝试从 this page 下载二进制 ObjectiveC SDK确保与您的 C++ SDK 的版本相匹配。如果您使用的是最新的 C++ SDK (7.1.1),我可以看到 the site 需要这些用于分析:

    (required) firebase.framework
    firebase_analytics.framework
    
    pod 'Firebase/Analytics', '7.5.0'
    

    因此,您必须在standalone iOS SDK you downloaded (this link takes you directly to 7.5.0) 中找到FirebaseAnalytics 文件夹,而不是创建一个包含pod 'Firebase/Analytics', '7.5.0'PodFile。它里面是该功能的所有依赖项。此外,还有一个自述文件列出了 Firebase 功能之间的依赖关系。

    对于 FirebaseAnalytics,您应该能够打开 FirebaseAnalytics 文件夹并链接其中的所有框架。如果您查看自述文件,这些是您应该在文件夹中看到的依赖项:

    ## FirebaseAnalytics
    - FirebaseAnalytics.xcframework
    - FirebaseCore.xcframework
    - FirebaseCoreDiagnostics.xcframework
    - FirebaseInstallations.xcframework
    - GoogleAppMeasurement.xcframework
    - GoogleDataTransport.xcframework
    - GoogleUtilities.xcframework
    - PromisesObjC.xcframework
    - nanopb.xcframework
    

    如果您要添加 FirebaseCrashlytics,除了 FirebaseAnalytics 中的所有内容外,您还需要从该文件夹中拖动所有内容。来自自述文件:

    ## FirebaseCrashlytics (~> FirebaseAnalytics)
    - FirebaseCrashlytics.xcframework
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-21
      • 2020-01-24
      • 1970-01-01
      • 1970-01-01
      • 2018-12-11
      • 1970-01-01
      • 2012-03-13
      • 2019-09-18
      相关资源
      最近更新 更多