iOS从同一个库的不同版本复制符号

时间:2015-01-09 15:59:52

标签: ios objective-c xcode static-libraries duplicate-symbol

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

有哪些解决方案?


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

1 个答案:

答案 0 :(得分:0)

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

local $/ = "\0";
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};
    }
}