日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

iOS SDK中引入第三方頭文件報(bào)Undefined symbols for architecture arm64:

作者:Morris_ 更新時(shí)間: 2022-04-12 編程語言

一般做SDK,不建議直接依賴別的SDK文件,盡量保持自己的SDK功能獨(dú)立,如果要依賴使用CocoaPods配置好,以免別人在用的時(shí)候有坑。

如果你不想用CocoaPods的話,也有解決辦法,例如你只依賴了個(gè)別文件。

可以將依賴的庫的文件的頭文件添加到你的SDK里就可以了。

頭文件重復(fù)項(xiàng)目是不會(huì)報(bào)錯(cuò)的。

到時(shí)候打包framework的時(shí)候?qū)㈩^文件一起打包到你的SDK中,這樣別人用你的SDK的時(shí)候,同時(shí)也需要導(dǎo)入的你依賴的文件的源文件。

這樣的做法有不妥,但也能解決問題。

如果引入第三方的文件編譯自己的SDK的時(shí)候報(bào)如下錯(cuò)誤:
Undefined symbols for architecture arm64: ... ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation)

解決辦法是,刪除TATGET -> Building Phases -> Compile Sources 下所有的文件重新編譯SDK?

刪除再編譯是不報(bào)錯(cuò)了,但是SDK里面的 Compile Source 里面都是源文件,如果都刪除的話,打包出來的SDK還包含這些源文件嗎?

如果去掉的話打包出來的SDK使用試試,肯定會(huì)報(bào)錯(cuò)。

這樣是治標(biāo)不治本…

我的解決方案是將 Mach-O Type改為 Static Library。原來是原來是 Dynamic Library(動(dòng)態(tài)庫),改成靜態(tài)Static Library。

在這里插入圖片描述

然后重新編譯SDK,再引用到Demo中調(diào)試,就不會(huì)有問題了。

原文鏈接:https://blog.csdn.net/Morris_/article/details/123244665

欄目分類
最近更新