Связывание статических библиотек - PullRequest
0 голосов
/ 17 октября 2011

У меня есть проект, который использует несколько статических библиотек, и я продолжаю получать ошибки, подобные этой:

ld: duplicate symbol _deg2Rad in Frameworks/MyFramework.embeddedframework/
MyFramework.framework/MyFramework(MyFramework) and Frameworks/
MyFramework.embeddedframework/MyFramework.framework/MyFramework(MyFramework) for 
architecture armv7

Command /***/Development/Platforms/iPhoneOS.platform/Developer/
usr/bin/clang failed with exit code 1

Я предполагаю, что это как-то связано с ARC, который я использую и в своем проекте, и в библиотеке, указанной в ошибке. Кроме того, указанная библиотека использует одну статическую библиотеку, в которой НЕ включен ARC. Моя цель развертывания - 4.3. Библиотеки развернуты на iOS 5.0.

Раньше у меня были развернуты библиотеки на 4.3, но я получил похожие ошибки с _objc_retainedObj вместо _deg2Rad.

Любая помощь очень ценится! Какая еще информация может помочь кому-то решить эту проблему?

Спасибо

Ответы [ 3 ]

0 голосов
/ 17 октября 2011

Скорее всего, ваши статические библиотеки используют ту же функцию (например, deg2Rad), и вы получаете это ...

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

Решение состоит в том, чтобы связаться с ними и попросить их настроить префикс своих функций и переменных, предоставляемых их файлами .h ...

0 голосов
/ 12 ноября 2011

Забыв о настройке пути поиска фреймворка, это еще одна причина проблем со сборкой фреймворков.

0 голосов
/ 17 октября 2011

В вашей конфигурации флагов компилятора у вас есть -ObjC -all_load?Попробуйте добавить их к цели вашего проекта.Затем очистите и восстановите.У меня тоже иногда возникала эта проблема, и обычно это потому, что я забыл эти флаги.

...