Экономичный фреймворк для iPhone

В настоящее время я застрял, пытаясь скомпилировать файлы, сгенерированные моей целью c, в моем проекте iPhone. По сути, он постоянно говорит мне, что такого каталога нет для следующих четырех операций импорта:

Thrift / TProtocol.h Thrift / TApplicationException.h Thrift / TProtocolUtil.h Thrift / TProcessor.h

Я следую всем инструкциям на вики-странице Thrift, скачал и скомпилировал структуру Thrift в XCode, но нет никакой информации, относящейся к разработке для iPhone. Я почти уверен, что это проблема, специфическая для проекта iPhone, потому что, если я создаю новый проект командной строки в XCode, я могу легко импортировать эти файлы.


person Aaron    schedule 01.09.2010    source источник
comment
Я нашел папку под названием Thrift.framework и включил ее в связанные библиотеки моей целевой библиотеки. Теперь нет проблем с поиском импортированных файлов, кроме их связывания. По умолчанию проект Thrift.framework компилируется для x86_64. Если строить для симулятора, он говорит мне, что это должен быть i386, на который я меняю обзор Thrift на. Если я компилирую для устройства, он сообщает мне, что оно должно быть в руке, в которой я не могу скомпилировать проект Thrift. В любом случае (в 64, 386, для симулятора или для устройства) я получаю следующее:   -  person Aaron    schedule 01.09.2010
comment
Неопределенные символы: _OBJC_CLASS _ $ _ TProtocolUtil, ссылка на которую: objc-class-ref-to-TProtocolUtil в gen_1.o _OBJC_CLASS _ $ _ TApplicationException, ссылка на: objc-class-ref-to-TProtocolUtil в gen_1.o ld: symbol (s) not найдено collect2: ld вернул 1 статус выхода   -  person Aaron    schedule 01.09.2010


Ответы (2)


Пользуясь услугами какого-то колдуна, я понял, как заставить Thrift работать с iPhone / iPad (или, по крайней мере, заставить его нормально компилироваться).

Во-первых, вы хотите получить файлы objective-c с помощью этой команды, а не из вики:

svn co http://svn.apache.org/repos/asf/incubator/thrift/trunk/lib/cocoa/src/ thrift-cocoa

Затем создайте новый проект Xcode, перейдя в New Project, выбрав Framework & Library и Cocoa Framework. Нажмите "Создать" и сохраните его в удобном месте. Щелкните правой кнопкой мыши Targets и выберите Add -> New Target. Выберите Cocoa Touch, а затем - Статическую библиотеку. Дайте ему красивое имя. Перейдите на вкладку Build цели в информации и измените базовый SDK на устройство iPhone (я использую 3.2, но вы можете использовать что угодно) и измените архитектуру на Standard (armv6 armv7) или Optimized (armv7). На вкладке General добавьте фреймворки Foundation и Cocoa.

Перетащите все файлы и папки, полученные из репозитория svn, в папку Classes в проекте. Установите флажок «Копировать элементы» и установите флажки рядом с обеими целями. Удалите TSocketServer.h и .m из папок «Копировать заголовки» и «Источники компиляции» статической библиотеки соответственно. Теперь вы можете создать статическую библиотеку (и фреймворк по желанию).

Откройте проект, в котором вы хотите использовать Thrift, и перейдите на вкладку «Общие» вашей цели в информации. Добавьте только что созданную статическую библиотеку в список связанных библиотек. Он должен называться libYOUR_TARGET_NAME.a. На вкладке сборки перейдите в «Пути поиска заголовков», добавьте путь к только что созданному проекту Thrift и установите флажок «Рекурсивный».

Наконец, вам просто нужно изменить операторы импорта в коде, сгенерированном Thrift, просто удалив скобки и заменив их кавычками. Теперь вы можете снова создать свой проект для iPhone.

person Aaron    schedule 01.09.2010

Попробуйте добавить эти файлы .h в свой проект Xcode.

person hotpaw2    schedule 01.09.2010
comment
Просто вытащите файлы заголовков из проекта Thrift.framework для XCode и поместите их в мой проект? Я попробую, но не понимаю, зачем я вообще строю фреймворк. - person Aaron; 01.09.2010