две статические библиотеки с дублирующимися символами в Xcode - PullRequest
3 голосов
/ 04 декабря 2011

У меня есть две статические библиотеки, которые, кажется, имеют повторяющиеся символы (TBXML.o) и не будут компилироваться.

ld: duplicate symbol _OBJC_METACLASS_$_TBXML in /Users/Hoya/Desktop/SocialSync/include/SMUFLib/deviceLib/libSFCommonLibs.a(TBXML.o) and /Users/Hoya/Desktop/SocialSync/Cauly/libCaulyDevice.a(TBXML.o) for architecture armv6
Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/clang failed with exit code 1

Разработчик обеих библиотек не предоставляет исходный код, поэтому я ничего не могу сделать, чтобы редактировать код напрямую, чтобы исправить его.

Есть ли что-нибудь, что я могу сделать, чтобы обойти это, не раздражая разработчиков библиотеки?

1 Ответ

4 голосов
/ 04 декабря 2011

Часть 1 - Выяснение, представляют ли символы один и тот же объект.

Примечание. Это зависит от OS X.

Хорошо, давайте посмотрим, как можно посмотреть на их разборку.

Вы можете использовать otool для этого:

otool -v -t '/Users/Hoya/Desktop/SocialSync/Cauly/libCaulyDevice.a(TBXML.o)' 

и

otool -v -t '/Users/Hoya/Desktop/SocialSync/include/SMUFLib/deviceLib/libSFCommonLibs.a(TBXML.o)'

Изучите разборки, чтобы увидеть, одинаковы ли они, если это так, то вам повезло :-)

Если формат foo.a (bar.o) вышеприведенных команд не работает (по какой-либо причине, хотя и должен), вы можете попробовать его, удалив (TBXML.o) из обоих, но тогда у вас будет сделать немного больше работы.

Если они одинаковы, вы можете легко использовать otool + lipo для перестройки ОДНОГО из двух файлов .a, чтобы в нем не было TBXML.o

В случае, если они не одинаковы, нужно сделать гораздо больше обмана :) может даже не быть легко.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...