我目前有一个用于非常大的代码库的 Xcode 项目,我将其称为X计划,我将其分为一堆子项目(项目A、B、C ).
到目前为止,每个项目都可以自行编译,效果很好。它们都生成静态库。项目B and 项目C依赖于生成的静态库项目A为了建造。
我有另一个 xcode 项目,Z计划,这需要由生成的静态库项目B和C。问题就在这里。什么时候Z计划进入链接器阶段,事情发生了——在库中发现了重复的符号项目B和C对于他们最初链接的代码项目A!
我对静态库的世界还很陌生,我不确定如何继续前进Z计划,或者如何修改其他项目,以便它们链接到相同的项目项目A库。我有一种感觉,这是不可能的。我在这里有什么选择?
Edit:
我应该澄清一下项目B and 项目C需要构建单独的静态库,因为某些客户端只需要其中之一。
另外,我在 OSX 和 iOS 平台上都遇到了这种困境。
我意识到我可以通过将项目构建为动态库来解决 OSX 上的这个问题。然而,我不想这样做,它仍然让我在 iOS 上遇到同样的问题。
静态库不应包含其他静态库(或一般的第三方代码)。静态库只是一堆粘合在一起的 .o 文件。因此,如果您拥有相同信息的多个副本,它就会崩溃。
每个静态库中应该只包含自己的代码。最终应用程序负责将所有所需的库链接在一起(包括库所需的库)。这样,链接的每个事物就只有一个副本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)