【发布时间】:2015-01-09 15:59:52
【问题描述】:
应用 A 需要第三方库 B 和 C。B 和 C 都包含不同版本的库 D(来自其他第三方)。 没有可用的第三方源代码。 这将在链接应用程序时出现重复符号错误。
有哪些解决方案?
涉及相同库的相关问题,允许简单地删除一个副本:How to handle duplicate symbol error from 3rd party libraries?
【问题讨论】:
-
给出的答案是一种完全有效的方法。使用有什么问题?
-
如果两个版本的库不是二进制兼容的,那么删除一个副本会破坏依赖它的代码。
-
在这种情况下,您可以采取的方法并不多——您必须将 B & D 合并到一个共享框架中,只公开 B 提供的类;然后对 C & D 做同样的事情,那么你应该能够将 B & C 链接到 A;不过,我不知道在这种情况下,objective-c 运行时会如何表现。这是我用于 C/C++ 库的一种方法,但我从未在 Objective-c 中尝试过。另外,我不知道在这种情况下,objective-c 运行时是否会做正确的事情
标签: ios objective-c xcode static-libraries duplicate-symbol