我正在编写一个依赖于静态第三方库Foo
的iOS框架Lib
,并且在获取链接时遇到问题。
如果Foo
是一个静态库,我将不将其与Lib
相关联,并且仅将主项目链接到它们。但这种方法似乎不适用于框架:链接器抱怨Lib
中缺少符号。
所以我采用了另一种方法并将Foo
与Lib
相关联。现在链接器很高兴,但有一个显而易见的问题:如果主项目由于其自身原因使用Lib
并且链接Foo
和Lib
,我会得到重复的符号:
Class <Something> is implemented in both <Here> and <There>.
One of the two will be used. Which one is undefined.
我知道我可以停止将该应用与Lib
相关联,一切都会好的,但我想把事情做对。怎么样?
答案 0 :(得分:1)
我能够将这个工作用于框架,尽管文档说它也适用于静态库。
我所做的是将主项目与Foo
和Lib
联系起来。现在Foo
有#34;缺少符号&#34;错误。选择Foo
目标,然后转到其他链接标记。添加-weak_framework Lib
并加注!链接器将停止抱怨。重复的符号运行时错误消失了。
根据docs:
-weak_framework
选项告诉链接器弱链接命名框架中的所有符号。如果需要链接到库而不是框架,则可以使用-weak_library
链接器命令