У меня есть толстая статическая библиотека, скомпилированная для armv7 и i386. В моем проекте iPhone/iPad все работает нормально, но я могу установить свое приложение только на устройство armv7, поэтому iPhone 3gs и выше...

Есть способ запустить мой проект на armv6, чтобы я мог установить его на ipod touch и старую версию iphone (также, если я отключу использование библиотеки armv7).

Я пробую это:

#ifdef _ARM_ARCH_7
... //include and use of armv7 library
#else
... //not include armv7 library
#endif

Но когда я компилирую свой проект, у меня возникает ошибка ссылки...

Команда /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/clang++ завершилась неудачно с кодом выхода 1

Итак, есть способ запустить мое приложение на всех типах устройств, но связать определенную библиотеку при компиляции для armv7???

Спасибо за помощь!

2
Luciano Salemme 28 Ноя 2011 в 19:25
Как вы включаете статическую библиотеку в свой проект сегодня? Используете ли вы -l (например, -l libmyFatLibrary) в настройках проекта или перетащили статическую библиотеку в список файлов библиотек и фреймворков, которые нужно связать?
 – 
Michael Dautermann
28 Ноя 2011 в 19:49
Я перетаскиваю толстую библиотеку в список файлов... и все работает нормально. Я пытаюсь с опцией -l?
 – 
Luciano Salemme
28 Ноя 2011 в 20:23

1 ответ

Вам нужно слабо связать эту библиотеку. Откройте настройки сборки и найдите Other Linker Flags. Вам нужно добавить две записи, первая — «-weak_library», вторая — путь к файлу библиотеки (возможно, вам придется поискать, что передается компоновщику, чтобы найти, что это такое).

Они должны быть в таком порядке, поскольку этот список превращается в параметры для компоновщика в том порядке, в котором они представлены.

2
QueyJoh 6 Дек 2011 в 07:09