幾個鏈接錯誤-Undefined symbols for XXX typeinfo for XXX

編譯iOS WebRTC 靜態(tài)庫醒颖,鏈接時候報錯

Undefined symbols for architecture arm64:
  "webrtc::RtpExtension::RtpExtension(std::__1::basic_string_view<char, std::__1::char_traits<char> >, int)", referenced from:
      zp_webrtc::ZPAVErrorType rtc::FunctionView<zp_webrtc::ZPAVErrorType ()>::CallVoidPtr<webrtc::NebulaPushlishChannelHelperImpl::startLocalAudioSend(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, unsigned int const&)::$_16>(rtc::FunctionView<zp_webrtc::ZPAVErrorType ()>::VoidUnion) in NebulaChannelHelperImpl.o
  "typeinfo for webrtc::SrtpTransport", referenced from:
      typeinfo for zp_webrtc::ZPSrtpInternalTransport in zpTransport.o
  "typeinfo for rtc::MessageHandler", referenced from:
      typeinfo for webrtc::MethodCall<webrtc::NebulaCallConfig, bool> in NebulaCallConfig-8879677226ab8c9a89635da475c6c00e.o
  "webrtc::SrtpTransport::OnNetworkRouteChanged(std::__1::optional<rtc::NetworkRoute>)", referenced from:
      vtable for zp_webrtc::ZPSrtpInternalTransport in zpTransport.o
  "typeinfo for rtc::LogSink", referenced from:
      typeinfo for zp_webrtc::NebulaWebrtcLog in NebulaWebrtcLog.o
  "typeinfo for rtc::PacketTransportInternal", referenced from:
      typeinfo for zp_webrtc::ZPUdpOperator in zpUdpOperator.o
  "typeinfo for webrtc::FieldTrialParameterInterface", referenced from:
      typeinfo for webrtc::FieldTrialParameter<webrtc::DataRate> in NebulaMediaChannelPlayControl.o
  "typeinfo for rtc::AsyncClosure", referenced from:
      typeinfo for rtc::FireAndForgetAsyncClosure<rtc::MethodFunctor<zp_webrtc::NebulaMediaChannelPlayControl, void (zp_webrtc::NebulaMediaChannelPlayControl::*)(), void> > in NebulaMediaChannelPlayControl.o
      typeinfo for rtc::FireAndForgetAsyncClosure<rtc::MethodFunctor<zp_webrtc::ZPUdpOperator, void (zp_webrtc::ZPUdpOperator::*)(), void> > in zpUdpOperator.o
      typeinfo for rtc::FireAndForgetAsyncClosure<rtc::MethodFunctor<webrtc::NebulaPushlishChannelHelperImpl, void (webrtc::NebulaPushlishChannelHelperImpl::*)(), void> > in NebulaChannelHelperImpl.o
      typeinfo for rtc::FireAndForgetAsyncClosure<webrtc::NebulaPushlishChannelHelperImpl::OnRtcpPacketReceived_n(rtc::CopyOnWriteBuffer*, long long)::$_20> in NebulaChannelHelperImpl.o
  "std::__1::optional<webrtc::DataRate> webrtc::ParseTypedParameter<webrtc::DataRate>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)", referenced from:
      webrtc::FieldTrialParameter<webrtc::DataRate>::Parse(std::__1::optional<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >) in NebulaMediaChannelPlayControl.o
  "webrtc::FieldTrialBasedConfig::Lookup(std::__1::basic_string_view<char, std::__1::char_traits<char> >) const", referenced from:
      zp_webrtc::NebulaMediaChannelPlayControl::CreateCall(webrtc::RtcEventLog*) in NebulaMediaChannelPlayControl.o
      webrtc::NebulaCallConfig::CreateCall(webrtc::RtcEventLog*) in NebulaCallConfig-8879677226ab8c9a89635da475c6c00e.o
      webrtc::NebulaCallConfig::CreateCall(webrtc::RtcEventLog*) in NebulaCallConfig-aa473c961879510618c7fe80a29a2a2c.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

開始以為就是符號找不到雇锡,怎么改都無果。而且報的都是類型未定義贬蛙,不是具體方法未定義雨女,都發(fā)生在類繼承的時候。后發(fā)現(xiàn)是webrtc編譯關了rtti阳准,上層編譯鏈接開了 rtti氛堕,上層關了就可以了。
xcode 關閉 rtti野蝇,找到 build settings 搜索 runtime types岔擂,設置成 No

image.png

參考:

  1. stackoverflow的回答: https://stackoverflow.com/questions/1693634/undefined-symbols-vtable-for-and-typeinfo-for

There is another reason you can get this error, and just want to document it here. I was linking with a static library which did not have RTTI. So Using the C++ flag -fno-rtti fixed for me. If you do not need RTTI, you can using this flag as well. Hope this helps.

  1. https://blog.csdn.net/debugconsole/article/details/9379627

還有一種

webrtc::ParseTypedParameter<webrtc::DataRate>(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >)", referenced from:
      webrtc::FieldTrialParameter<webrtc::DataRate>::Parse(std::__1::optional<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >) in NebulaMediaChannelPlayControl.o
  "webrtc::FieldTrialBasedConfig::Lookup(std::__1::basic_string_view<char, std::__1::char_traits<char> >) const", referenced from:

是由于c++17中增加了 string_view類型位喂,webrtc中用的是谷歌自己的 absl庫中的string_view,上層在鏈接的時候按stl去找的乱灵,所以鏈接不到塑崖,把上層c++17的編譯選項改為c++14即可。xcode在這里:


image.png

搞了兩天痛倚,漲知識了???? ??

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末规婆,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子蝉稳,更是在濱河造成了極大的恐慌抒蚜,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件耘戚,死亡現(xiàn)場離奇詭異嗡髓,居然都是意外死亡,警方通過查閱死者的電腦和手機收津,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門饿这,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人撞秋,你說我怎么就攤上這事长捧。” “怎么了吻贿?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵串结,是天一觀的道長。 經(jīng)常有香客問我舅列,道長肌割,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任帐要,我火速辦了婚禮把敞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘宠叼。我一直安慰自己,他們只是感情好其爵,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布冒冬。 她就那樣靜靜地躺著,像睡著了一般摩渺。 火紅的嫁衣襯著肌膚如雪简烤。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天摇幻,我揣著相機與錄音横侦,去河邊找鬼挥萌。 笑死,一個胖子當著我的面吹牛枉侧,可吹牛的內(nèi)容都是我干的引瀑。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼榨馁,長吁一口氣:“原來是場噩夢啊……” “哼憨栽!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起翼虫,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤屑柔,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后珍剑,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體掸宛,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年招拙,在試婚紗的時候發(fā)現(xiàn)自己被綠了唧瘾。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡迫像,死狀恐怖劈愚,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情闻妓,我是刑警寧澤菌羽,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站由缆,受9級特大地震影響注祖,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜均唉,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一是晨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧舔箭,春花似錦罩缴、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至镜会,卻和暖如春檬寂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背戳表。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工桶至, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留昼伴,地道東北人。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓镣屹,卻偏偏與公主長得像圃郊,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子野瘦,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容