PocketSphinx, файл не имеет необходимой архитектуры в устройстве iPhone, но работает в симуляторе? - PullRequest
0 голосов
/ 27 апреля 2010

Я новичок в разработке Apple, для своего проекта Uni я пытаюсь разработать приложение для iPhone, используя PocketSphinx для распознавания речевых команд ...

Я использовал скрипт "build_for_iphoneos.sh", доступный в PocketSphinx SVNи SphinxBase.Программа работает без проблем, когда я пробую ее на симуляторе, сегодня я пытаюсь развернуть на устройстве, и это дает мне эту ошибку?Может ли кто-нибудь помочь мне решить эту проблему, пожалуйста?

Ошибка:

ld: warning: in /Users/me/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.2.sdk/lib/libpocketsphinx.a, file is not of required architecture
ld: warning: in /Users/me/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.2.sdk/lib/libsphinxbase.a, file is not of required architecture

, а остальные ссылки на функции сообщают о неопределенной ошибке!

любая помощь?Благодарю.Дживан

Ответы [ 2 ]

1 голос
/ 30 апреля 2010

решаемые ... Следуя инструкциям, данным Sphinx, все пройдут в порядке, указанном в файле Readme. Который является:

./build_for_iphoneos.sh simulator
./build_for_iphoneos.sh device

Поскольку Simulator основан на архитектуре i386, при вызове устройства «./build_for_iphoneos.sh» он по-прежнему сохраняет предыдущий кэш и игнорирует изменение архитектуры armv6 ...

Чтобы решить эту проблему, Звони "Очисти" между ними ...

./build_for_iphoneos.sh simulator
make clean
./build_for_iphoneos.sh device

Надеюсь, это поможет другим ... Спасибо "Люциусу" за помощь. Я кое-что узнал об инструменте Lipo ...:)

0 голосов
/ 27 апреля 2010

Обычно эта ошибка возникает, когда у вас есть статическая библиотека, созданная только для Intel, когда вам нужно собрать для arm. Вы можете иметь толстый двоичный файл для обеих архитектур, если используете инструмент lipo.

Редактировать: Ой, я имел в виду "липо" инструмент, который был автоматически исправлен на губу. Чтобы создать толстую двоичную статическую библиотеку iPhone для устройств iPhone OS (arm6 / arm7) и Simulator (i386), используйте что-то вроде этого:

lipo -output libOAuthConsumerTouch.a -create Release-iphoneos/libOAuthConsumerTouch.a Release-iphonesimulator/libOAuthConsumerTouchSim.a

Это было для библиотеки под названием "OAuthConsumerTouch"

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