[英]Qt && firebase C++ SDK linking issues on iOS
我有以下構建環境:
並嘗試使用 firebase 支持從 QtCreator 為 iOS 構建我的應用程序,但它失敗並出現以下鏈接錯誤:
架構 arm64 的未定義符號:
“_OBJC_CLASS_$_FIRMessaging”,引用自:firebase_messaging 中的 objc-class-ref(messaging_231c52c311096cfce13e67fa91eb9ac5.o)
“_OBJC_CLASS_$_FIRApp”,引用自:firebase 中的 objc-class-ref(app_ios_814e1620d4f88024cea4bade26623a67.o)
“_OBJC_CLASS_$_FIROptions”,引用自:firebase 中的 objc-class-ref(app_ios_814e1620d4f88024cea4bade26623a67.o) ld:未找到體系結構 arm64 的符號 clang:錯誤:linker 命令失敗,退出代碼 1(使用 -v )
我已將我的項目簡化為以下代碼:
== 主.cpp ==
#include <QCoreApplication>
#include <firebase/app.h>
#include <firebase/messaging.h>
#include <firebase/util.h>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
::firebase::App *fapp = ::firebase::App::Create();
Q_UNUSED(fapp);
return a.exec();
}
項目文件是:
QT -= gui
CONFIG += c++11 console
CONFIG -= app_bundle
# Check for GOOGLE_FIREBASE_SDK environment variable.
ENV_GOOGLE_FIREBASE_SDK = $$(GOOGLE_FIREBASE_SDK)
# Or define GOOGLE_FIREBASE_SDK path here.
GOOGLE_FIREBASE_SDK =
isEmpty(ENV_GOOGLE_FIREBASE_SDK) {
isEmpty(GOOGLE_FIREBASE_SDK) {
message("GOOGLE_FIREBASE_SDK" environment variable not detected!)
}
}
INCLUDEPATH += $$(GOOGLE_FIREBASE_SDK)
INCLUDEPATH += $$(GOOGLE_FIREBASE_SDK)/include
SOURCES += \
main.cpp
FCM_LIBS_PATH = $$(GOOGLE_FIREBASE_SDK)/frameworks/ios/universal
message("FCM_LIBS_PATH = $$FCM_LIBS_PATH")
LIBS += -F$$FCM_LIBS_PATH \
-framework firebase_messaging \
-framework firebase \
-framework Foundation \
-framework UserNotifications \
-framework UIKit \
-framework CoreGraphics
firebase SDK 包含不同架構的不同框架目錄:
正如我所看到的與“arm64”架構相關的錯誤,因此,我已將項目文件 LIBS 更改為使用“arm64”而不是“universal”,但這無濟於事。
我還嘗試使用 qmake 生成的 xcode.project 文件從 XCode 構建項目,但出現相同的錯誤。
我在 stackoverflow 上查看了類似的問題,但解決方法無濟於事:
我查看了以下項目的代碼:
但我不明白為什么會出現這個 linker 錯誤。也許是 qmake 錯誤?
該錯誤表示該項目缺少 Firebase pod。
光有firebase_cpp_sdk
是不夠的,另外還需要Firebase核心庫。
為了添加 Firebase 庫,您應該遷移到使用 cocoapods。
在項目的源代碼根目錄中,運行pod init
將生成一個新文件Podfile
。
打開文件,將以下行添加到目標pod 'Firebase/Analytics'
並保存文件。
成功運行pod update
后,打開.xcworkspace
並照常構建。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.