Firebaseアクセス:Undefind symbols for architecture arm 64:"_OBJC_CLASS_$_FIRDynamicLinks"
2801 ワード
エラー:
ld: warning: directory not found for option '-L /Users/mobilefish/Library/Developer/Xcode/DerivedData/Unity-iPhone-fwocxxrsxgizoydxrjlbwrfeilsb/Build/Products/Release-iphoneos/GoogleToolboxForMac /Users/mobilefish/Library/Developer/Xcode/DerivedData/Unity-iPhone-fwocxxrsxgizoydxrjlbwrfeilsb/Build/Products/Release-iphoneos/Protobuf /Users/mobilefish/Library/Developer/Xcode/DerivedData/Unity-iPhone-fwocxxrsxgizoydxrjlbwrfeilsb/Build/Products/Release-iphoneos/nanopb'
ld: warning: arm64 function not 4-byte aligned: ltmp0 from /Volumes/Untitled/OrientalSkyProjects/MC_XCodeProject/MC_XCodeProject/Libraries/libiPhone-lib.a(unwind_test_arm64.o)
ld: warning: arm64 function not 4-byte aligned: _unwind_tester from /Volumes/Untitled/OrientalSkyProjects/MC_XCodeProject/MC_XCodeProject/Libraries/libiPhone-lib.a(unwind_test_arm64.o)
Undefined symbols for architecture arm64:
"_OBJC_CLASS_$_FIRDynamicLinks", referenced from:
objc-class-ref in libApp.a(invites_receiver_internal_ios_75ab5b9435a7c52eb095887705fc1133.o)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
質問:
libAppでaのinvites_receiver_internal_iosでは「OBJC_CLASS$_FIRDynamicLinks」が呼び出されていますが、このFIRDynamicLinksの定義は見つかりません.つまりframeworkなどが欠けているのかもしれません.
同様のエラー解決を見つけます.http://kojirohashida.hatenablog.com/entry/2017/01/18/124806ブロガーの誤った解説もFirebaseのpodfileで与えられたframeworkが足りない.必要なライブラリを見つけてpodfileに追加し、pod installして工事に追加すればいいです.
Firebaseドキュメントの検索では、FIRDynamicLinksがFirebaseDynamicLinksにあることがわかりました.rameworkにあるので、Podfileに次のように追加します.
pod 'Firebase/DynamicLinks'
pod updateの後、Xcodeエンジニアリングに追加することに注意してください.(#TODO:PlayServerResolverというプラグインは、UnityでXcodeプロジェクトをコンパイルしたとき、いつCocoapodsを走りましたか?Xcodeのプロジェクトに対してどんな仕事をしましたか?)
その他:
この问题は私を困らせてとても长い时间、最初は直接无脳Googleでいろいろな奇妙な方法を试みて解决することができなくて、それからボスは走って来て私にこの间违いを报告していったいどういう意味ですかと闻きました.aファイルの中身はいったい何の構造ですか.dllか?libか?soか何かの鬼かlibAppか.a自分が欠けているのか、それともlinkが他の何かに欠けているのか.いったい何の問題なのかを明らかにしてから、考えがはっきりした.総じて言えば、コンパイル原理を補う必要があるかもしれません.の
.a
files are static library files. They "contain"one or more .o
files, i.e. compiled code. To use them, you (often) need the header ( .h
) files that correspond to the compiled code, but you do not need the source code ( .c
, .m
) itself. The .a
files are produced with the ar
utility, and the linker ( ld
) that is (usually) invoked by your compiler knows their format and how to extract the relevant pieces of code from the archive and into your executable. (https://stackoverflow.com/questions/8224035/what-is-a-a-as-libcrypto-a-file)