在创建iOS框架时如何解决类名冲突?

时间:2014-06-17 13:54:13

标签: ios xcode frameworks linker

我正在编写一个依赖于静态第三方库Foo的iOS框架Lib,并且在获取链接时遇到问题。

如果Foo是一个静态库,我将将其与Lib相关联,并且仅将主项目链接到它们。但这种方法似乎不适用于框架:链接器抱怨Lib中缺少符号。

所以我采用了另一种方法并将FooLib相关联。现在链接器很高兴,但有一个显而易见的问题:如果主项目由于其自身原因使用Lib并且链接FooLib,我会得到重复的符号:

Class <Something> is implemented in both <Here> and <There>.
One of the two will be used. Which one is undefined.

我知道我可以停止将该应用与Lib相关联,一切都会好的,但我想把事情做对。怎么样?

1 个答案:

答案 0 :(得分:1)

我能够将这个工作用于框架,尽管文档说它也适用于静态库。

我所做的是将主项目与FooLib联系起来。现在Foo有#34;缺少符号&#34;错误。选择Foo目标,然后转到其他链接标记。添加-weak_framework Lib并加注!链接器将停止抱怨。重复的符号运行时错误消失了。

根据docs

  

-weak_framework选项告诉链接器弱链接命名框架中的所有符号。如果需要链接到库而不是框架,则可以使用-weak_library链接器命令