Подключение HTTPKit к проекту приложения Theos. Ошибка с неопределенными символами

Цель

Я пытаюсь создать простейшее приложение Theos, работающее как HTTP-сервер.

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

Вопрос в двух словах

Не удалось использовать HTTPKit в проекте приложения Theos. Получение «Неопределенных символов» при использовании любого из классов HTTPKit.

Личные мысли

Я уверен, что ошибка "Неопределенные символы" вызвана неправильной связью. И я почти уверен, что он должен что-то делать с папкой зависимостей, так как я понятия не имею, куда его поместить и как связать.

Не обязательно использовать HTTPKit, но у меня возникают те же проблемы при попытке реализовать CocoaHTTPServer в приложении Theos.

Я также буду признателен за любые комментарии о том, что я делаю неправильно при установке Theos и создании приложений.

Как я установил и настроил Theos

  1. Установил Theos с помощью следующего руководства
  2. #P7# <блочная цитата> #P8#
  3. #P9# <блочная цитата> #P10#

Делаем простой проект

1.Создал приложение Theos с использованием сетевой карты.

cd ~
$THEOS/bin/nic.pl
NIC 2.0 - New Instance Creator
------------------------------
  [1.] iphone/application
  [2.] iphone/library
  [3.] iphone/preference_bundle
  [4.] iphone/tool
  [5.] iphone/tweak
Choose a Template (required): 1
Project Name (required): name
Package Name [com.yourcompany.name]: 
Author/Maintainer Name [***]: 
Instantiating iphone/application in name/...
Done.

2. Поместите весь репозиторий HTTPKit во вновь созданную папку.

~/имя/HTTPSources

3.Добавил следующую строку

name_FILES += $(foreach ext, c cpp m ​​mm x xm xi xmi, $(шаблон HTTPSources/*.$(ext)))

в Makefile, чтобы он выглядел как этот

4. Поместите все файлы из здесь в Вновь созданный

$THEOS/include/HTTPKit

5.Теперь папка $(THEOS) выглядит так: этим

6.Вызов make теперь не приводит к фатальным ошибкам (кроме команды ldid, которая, я думаю, не является жизненно важной), приводящей к

~/name/theos/makefiles/targets/Darwin/iphone.mk:41: Deploying to iOS 3.0 while building for 6.0 will generate armv7-only binaries.
Making all for application name...
 Copying resource directories into the application wrapper...
 Compiling main.m...
 Compiling nameApplication.mm...
 Compiling RootViewController.mm...
 Linking application name...
 Stripping name...
 Signing name...
/bin/sh: ldid: command not found

Пытаюсь использовать HTTPKit, получаю ошибки

1.Добавлен импорт HTTPKit и несколько простых строк из примера< /а>

HTTPServer * serv = [[HTTPServer alloc] init];
[serv handleGET:@"/hello/*"
           with:^(HTTPConnection *connection, NSString *name) {
               return [NSString stringWithFormat:@"Hello %@!", name];
           }];

в ~/name/main.m, чтобы он выглядел как этот

2. Теперь вызов make вызывает ошибку «Неопределенные символы для архитектуры armv7».

~/name/theos/makefiles/targets/Darwin/iphone.mk:41: Deploying to iOS 3.0 while building for 6.0 will generate armv7-only binaries.
Making all for application name...
 Copying resource directories into the application wrapper...
 Compiling main.m...
 Linking application name...
Undefined symbols for architecture armv7:
  "_OBJC_CLASS_$_HTTPServer", referenced from:
      objc-class-ref in main.m.f3071598.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [obj/name.app/name.ba964c90.unsigned] Error 1
make[1]: *** [internal-application-all_] Error 2
make: *** [name.all.application.variables] Error 2

Дополнительная информация

найти ~/имя

очистить все сообщения=yes


person nightsnaker    schedule 12.08.2014    source источник
comment
У вас это сработало? Я пытаюсь сделать то же самое.   -  person Darren    schedule 04.12.2015


Ответы (2)


Попробуйте добавить

     export ARCHS = armv7 arm64
     export TARGET = iphone:clang:7.0:7.0

в ваш созданный файл.

Это исправило аналогичную ошибку для меня. Если ошибка отличается, не могли бы вы опубликовать вывод?

person Zach Russell    schedule 12.08.2014
comment
Спасибо за ваш ответ! Пробовал добавить export ARCHS = armv7 arm64 export TARGET = iphone:clang:7.1:7.1 Ничего не изменилось, та же ошибка. - person nightsnaker; 13.08.2014

Я думаю, вам не хватает библиотеки. У вас есть только заголовок HTTPServer, но отсутствует реализация. Скомпилируйте HTTPKit и поместите его на $THEOS/lib. Затем добавьте name_LIBRARIES = nameoflibHTTKit в Makefile

person ienthach    schedule 11.09.2014