4

我正在尝试构建一个 iOS 库/框架,为了简单起见,我们会说它A向使用它的项目公开了一些类。现在的问题是 classA依赖于 class B,这并不意味着在库的构建输出中公开(甚至作为符号包含)。这会导致问题,因为其中还有另一个包含 classC的库,它也恰好依赖于 class B

发生的情况是,如果我尝试在项目中包含这两个库,链接器会抱怨有多个 class 定义B

解决此问题的最佳方法是什么?是否可以B在构建两个库(或至少两个库之一)时将类设置为弱链接,如果可以,如何?

或者应该将类B提取到它自己的库/框架中并修改两个库以引用它而不是将类B作为源文件包含?

4

1 回答 1

2

我认为最好的方法是在您的项目中制作多个目标。最简单的方法是在 XCode 左侧的文件列表中单击您的项目文件,右键单击中间窗格中“TARGETS”下的对象并选择Duplicate。然后,您可以在一个目标中包含 A 和 C,在另一个目标中包含 B 和 C。您可以单独编译它们,这基本上就像拥有两个项目,只是它们共享公共文件。这听起来像你想要的吗?

编辑再想一想,听起来不像。当您编译到一个库,然后将另一个项目链接到它时,您的问题就发生了,对吧?

似乎没有办法在编译库中拥有弱链接对象。您可能最好将它们拆分为单独的库(这是本页底部描述的场景中发生的情况)

于 2012-05-01T03:36:20.087 回答