2010-07-22 3 views
46

Я запускаю Xcode 3.2.3 с iOS 4.0 SDK. Я создал свое приложение с базовым SDK = iphoneos4.0, активным SDK = iphoneos4.0, целью развертывания = 3.1.3 и архитектурой = стандартным (arm6 arm7). Компилятор = GCC 4.2. Как я понимаю, это правильный способ: build приложение для iOS 4 и 3.Приключение iOS 4 при запуске на iOS 3.1.3: Символ не найден: __NSConcreteStackBlock

Приложение отлично работает на устройствах под управлением iOS 4. Но при сбое при сбое при попытке запустить его на устройство с прошивкой 3.1.3 (Ipod Touch 1G):

dyld: Symbol not found: __NSConcreteStackBlock 
    Referenced from: /var/mobile/Applications/192B30ED-16AC-431E-B0E9-67C1F41FD5DA/MyApp.app/MyApp 
    Expected in: /usr/lib/libSystem.B.dylib 

Это, как представляется, проблема с достаточно «низкий уровень» динамически-связанной библиотеки, прежде чем моя основная функция() даже не вызывается. Я даже попробовал перезапустить устройство и т. Д., Не повезло. Вот часть журнала аварий:

Process:   MyApp [60] 
Path:   /var/mobile/Applications/192B30ED-16AC-431E-B0E9-67C1F41FD5DA/MyApp.app/MyApp 
Identifier:  MyApp 
Version:   ??? (???) 
Code Type:  ARM (Native) 
Parent Process: launchd [1] 

Date/Time:  2010-07-22 17:16:17.942 -0400 
OS Version:  iPhone OS 3.1.3 (7E18) 
Report Version: 104 

Exception Type: EXC_BREAKPOINT (SIGTRAP) 
Exception Codes: 0x00000001, 0xe7ffdefe 
Crashed Thread: 0 

Dyld Error Message: 
    Symbol not found: __NSConcreteStackBlock 
    Referenced from: /var/mobile/Applications/192B30ED-16AC-431E-B0E9-67C1F41FD5DA/MyApp.app/MyApp 
    Expected in: /usr/lib/libSystem.B.dylib 
    Dyld Version: 149 

Binary Images: 
    0x1000 - 0x80fff +MyApp armv6 <d5f0ff6f233b4b034c222c16438c88d9> /var/mobile/Applications/192B30ED-16AC-431E-B0E9-67C1F41FD5DA/MyApp.app/MyApp 
0x2fe00000 - 0x2fe26fff dyld armv6 <544395a4b5546114b878d5131a84fd7f> /usr/lib/dyld 
0x30410000 - 0x30536fff libSystem.B.dylib armv6 <0373fd64e915a17160732b29d343f95f> /usr/lib/libSystem.B.dylib 

Спасибо за любой совет!

+1

Используете ли вы какие-либо рамки iOS4 (они должны быть слабосвязаны)? – christo16

+0

Нет, не то, что я знаю. Фактически, в последний раз приложение было построено и протестировано с SDK 3 и устройством 3.1.3 - до того, как был выпущен iOS 4. С тех пор я не изменил ни один из кода или библиотек - я просто пытаюсь построить с SDK 4 в первый раз и проверить на iOS 4 + iOS 3.x. –

ответ

85

Ben Gottlieb отметил вчера, что если вы используете блоки в любом месте приложения, вы увидите сбой, похожий на это, на ОС до 4.0 при создании с помощью компилятора LLVM. Чтобы обойти это, вы можете указать флаг компоновщика -weak-lSystem в настройках сборки Xcode.

+16

Ах, спасибо Брэд! Я просто возвращался к тому же решению (после некоторых проб и ошибок) ... Для всех, кто может столкнуться с этим, и вам нужна помощь в настройке слабой ссылки, вот скриншот: http://img.skitch.com /20100722-f65bkarx79gk8nye52ji834cbn.png Также обратите внимание, что это не похоже на компилятор LLVM - я просто использую GCC 4.2. –

+1

@Clint Harris - Я думаю, что для компилятора LLVM вам все равно нужно заставить слабую ссылку использовать флаг компилятора, потому что он не соблюдает настройку в окне проекта Xcode. –

+0

Что означает «блокировать» в этом контексте? Блок для меня означает блок кода, который, я полагаю, вряд ли вы имеете в виду здесь. Это решение действительно исправить это для меня тоже. Большое спасибо! – quano

1

Если вам случится использовать библиотеки cocos2d, есть уборщик способ сделать это, вы должны настроить цель развертывания цели Cocos2D на 3,0

+0

Есть ли у вас какие-либо идеи, как справиться с этим на шаблонах XCode 4? Благодарю. – fjlksahfob

18

Поскольку большинство из этих ответов являются специфическими для Xcode 3.x, просто хотел поделиться тем, что я сделал, чтобы исправить это с помощью Xcode 4.2.

Под вашей целью на вкладке «Сборка фаз» в разделе «Связывание двоичных файлов с библиотеками» я добавил «libSystem.dylib» и сделал его необязательным. Это позволило устранить проблемы с iOS 3.x при сохранении поддержки устройств iOS 4.x и 5.0.

+0

Большое спасибо. Работал как шарм. Ни в коем случае я бы не нашел решение этой загадочной ошибки без этой помощи. – CuriousMarc

Смежные вопросы