Библиотека привязки MonoTouch — EXC_BAD_ACCESS (SIGSEGV)

Мое приложение вылетает только на моем живом устройстве, когда я использую привязки Kiip MonoTouch. На симуляторе работает нормально. Вот часть моей трассировки стека:

0   libsystem_c.dylib               0x30eb293c memset$VARIANT$CortexA8 + 52
1   sample                          0x002b5738 GC_clear_stack_inner (misc.c:298)
2   sample                          0x002b574c GC_clear_stack_inner (misc.c:299)
3   sample                          0x002b574c GC_clear_stack_inner (misc.c:299)
4   sample                          0x002b574c GC_clear_stack_inner (misc.c:299)
5   sample                          0x002b574c GC_clear_stack_inner (misc.c:299)
6   sample                          0x002b574c GC_clear_stack_inner (misc.c:299)
7   sample                          0x002b574c GC_clear_stack_inner (misc.c:299)
8   sample                          0x002b574c GC_clear_stack_inner (misc.c:299)
9   sample                          0x002b574c GC_clear_stack_inner (misc.c:299)
10  sample                          0x002b574c GC_clear_stack_inner (misc.c:299)
11  sample                          0x002b57b8 GC_clear_stack (misc.c:344)
12  sample                          0x002b2bd8 GC_malloc_atomic (malloc.c:270)
13  sample                          0x0026f374 mono_object_new_ptrfree_box (object.c:4416)
14  sample                          0x00102290 wrapper_managed_to_native_object___icall_wrapper_mono_object_new_ptrfree_box_intptr (mscorlib.dll.6.s:92590)
15  sample                          0x0001da78 System_Collections_Generic_Dictionary_2_intptr_System_WeakReference_TryGetValue_intptr_System_WeakReference_ (monotouch.dll.6.s:14642)
16  sample                          0x0000d1e4 MonoTouch_ObjCRuntime_Runtime_TryGetNSObject_intptr (monotouch.dll.6.s:6354)
17  sample                          0x0000d2f0 MonoTouch_ObjCRuntime_Runtime_GetNSObject_intptr (monotouch.dll.6.s:6380)
18  sample                          0x0000d3a4 MonoTouch_ObjCRuntime_Runtime_GetNSObjectWrapped_intptr (monotouch.dll.6.s:6415)
19  sample                          0x00023e08 wrapper_native_to_managed_MonoTouch_ObjCRuntime_Runtime_GetNSObjectWrapped_intptr (monotouch.dll.6.s:17991)
20  sample                          0x002bea2c get_managed_object_for_ptr_fast (monotouch-glue.m:346)
21  sample                          0x001ca1fc native_to_managed_trampoline_Kiip_KPManager_set_SharedManager (registrar.m:823)

Вот SDK:

www.jmawebtechnologies.com/files/archive.zip

Вот пример проекта

https://github.com/mono/monotouch-bindings/tree/master/Kiip

Вот код, где происходит сбой программного обеспечения:

AppDelegate > KPManager.SharedManager = новый KPManager(

Вот полный журнал сбоев:

www.jmawebtechnologies.com/files/crash.zip


person Joseph Anderson    schedule 03.07.2012    source источник


Ответы (1)


Это связано с тем, что библиотека libKiip.a, которую вы используете, не имеет архитектуры, для которой вы строите. Это может произойти, например, если в libKiip.a есть код для armv6 и i386, но вы собираете для armv7.

Во время сборки это должно привести к следующему предупреждению:

warning MT1301: Native library `libKiip.a` (i386, ARMv7) was ignored since it does not match the current build architecture(s) (ARMv6)

Решение состоит в том, чтобы либо изменить проект MonoTouch, чтобы использовать архитектуру, доступную в библиотеке libKiip.a, либо убедиться, что у вас есть правильная архитектура в библиотеке (я полагаю, универсальный двоичный файл libKiip.a подойдет).

person Rolf Bjarne Kvinge    schedule 03.07.2012