iOS 来自同一库的不同版本的重复符号

iOS duplicate symbols from different versions of the same library

App A 需要第三方库 B 和 C。B 和 C 都包含不同版本的库 D(来自另一个第三方)。 没有第三方源代码可用。 这将在链接应用程序时出现重复符号错误。

有哪些解决方案?


涉及相同库的相关问题,允许简单地删除一个副本:How to handle duplicate symbol error from 3rd party libraries?

这已通过重命名 B 中的冲突符号(以及它的 D 版本,如果分开的话)解决了。 这可以直接在二进制文件上完成,只要重命名的长度与原始文件的长度相同(例如,通过反转库前缀)。

local $/ = "[=10=]";
open my $fh, '<+', $library;
binmode $fh;

while (my $field = <$fh>) {
    my $length = length $field;
    chomp $field;

    if (defined $translation{$field}) {
        seek $fh, -$length, SEEK_CUR;
        print $fh $translation{$field};
    }
}