A Xamarin Binding "Wrapper type" le falta su Clase nativa ObjectiveC

Estoy intentando vincular un accesorio externo MSR SDK a Xamarin. Tenga en count que está en ON en el dispositivo. No funciona en absoluto en el simulador. Sigo recibiendo este error:

Wrapper type 'iMagProII.IMag' is missing its native ObjectiveC class 'IMag'. 

Aquí está mi .cs con mis banderas vinculadoras:

 [assembly: LinkWith ("libiMagSDK.a", LinkTarget = LinkTarget.ArmV6 | LinkTarget.ArmV7 | LinkTarget.Simulator, SmartLink = true, ForceLoad = true, IsCxx = true, Frameworks = "CoreGraphics ExternalAccessory", LinkerFlags="-lsqlite3.0 -lc++")] 

Aquí está la traza de stack:

  at MonoTouch.Registrar.DynamicRegistrar.OnRegisterType (MonoTouch.Registrar.ObjCType type) [0x00334] in /Developer/MonoTouch/Source/monotouch/src/ObjCRuntime/.pmcs-compat.DynamicRegistrar.cs:573 at MonoTouch.Registrar.Registrar.RegisterTypeUnsafe (System.Type type, System.Collections.Generic.List`1& exceptions) [0x009a4] in /Developer/MonoTouch/Source/monotouch/src/ObjCRuntime/.pmcs-compat.Registrar.cs:1027 at MonoTouch.Registrar.Registrar.RegisterType (System.Type type, System.Collections.Generic.List`1& exceptions) [0x00011] in /Developer/MonoTouch/Source/monotouch/src/ObjCRuntime/.pmcs-compat.Registrar.cs:680 at MonoTouch.Registrar.DynamicRegistrar.Register (System.Type type) [0x00002] in /Developer/MonoTouch/Source/monotouch/src/ObjCRuntime/.pmcs-compat.DynamicRegistrar.cs:839 at MonoTouch.ObjCRuntime.Class.Register (System.Type type) [0x00000] in /Developer/MonoTouch/Source/monotouch/src/ObjCRuntime/.pmcs-compat.Class.cs:126 at MonoTouch.ObjCRuntime.Class.GetHandle (System.Type type) [0x00000] in <filename unknown>:0 at MonoTouch.Foundation.NSObject.AllocIfNeeded () [0x00015] in /Developer/MonoTouch/Source/maccore/src/Foundation/.pmcs-compat.NSObject2.cs:390 at MonoTouch.Foundation.NSObject..ctor (MonoTouch.Foundation.NSObjectFlag x) [0x00006] in /Developer/MonoTouch/Source/maccore/src/Foundation/.pmcs-compat.NSObject2.cs:102 at iMagProII.IMag..ctor () [0x00000] in /Users//Projects/Xamarin/Bindings/Unimag/iMagProII/obj/Debug/ios/iMagProII/IMag.g.cs:112 at iMagProII.iOS.ImagViewController.ViewDidLoad () [0x0005c] in /Users//Projects/Xamarin/Bindings/Unimag/iMagProII.iOS/ImagViewController.cs:46 at (wrapper managed-to-native) MonoTouch.ObjCRuntime.Messaging:IntPtr_objc_msgSendSuper (intptr,intptr) at MonoTouch.UIKit.UIViewController.get_View () [0x00030] in /Developer/MonoTouch/Source/monotouch/src/build/compat/UIKit/.pmcs-compat.UIViewController.g.cs:2232 at iMagProII.iOS.ImagViewController..ctor () [0x00008] in /Users//Projects/Xamarin/Bindings/Unimag/iMagProII.iOS/ImagViewController.cs:23 at iMagProII.iOS.AppDelegate.FinishedLaunching (MonoTouch.UIKit.UIApplication app, MonoTouch.Foundation.NSDictionary options) [0x00016] in /Users//Projects/Xamarin/Bindings/Unimag/iMagProII.iOS/AppDelegate.cs:33 at (wrapper managed-to-native) MonoTouch.UIKit.UIApplication:UIApplicationMain (int,string[],intptr,intptr) at MonoTouch.UIKit.UIApplication.Main (System.String[] args, System.String principalClassName, System.String delegateClassName) [0x0004c] in /Developer/MonoTouch/Source/monotouch/src/UIKit/.pmcs-compat.UIApplication.cs:38 at iMagProII.iOS.Application.Main (System.String[] args) [0x00008] in /Users//Projects/Xamarin/Bindings/Unimag/iMagProII.iOS/Main.cs:17 

Se agradecerá cualquier ayuda para get esta biblioteca. He estado golpeando mi cabeza durante horas.

Esto ocurre cuando la class IMag no se puede encontrar en el ejecutable final.

Las razones más comunes para esto son:

  • Un error tipográfico en el nombre de la class.
  • La biblioteca nativa no incluye la architecture para la que está construyendo. Por ejemplo, la biblioteca nativa debe contener el código i386 para ejecutarse en el simulador. Puede usar la herramienta lipo para enumerar las architectures en la biblioteca nativa:

     $ lipo -info /path/to/libiMagSDK.a 

    También debe conocer la architecture que está utilizando para la aplicación, puede verificar esto en la configuration de compilation iOS del proyecto, en la página Avanzada. Seleccione uno que incluye la biblioteca nativa.

  • La biblioteca nativa en el proyecto binding depende de otra biblioteca nativa que no está en el proyecto binding (y la class IMag está en esa otra biblioteca). Se deben include todas las dependencies que no sean plataforms.

  • La biblioteca nativa está construida incorrectamente y no incluye la class que está tratando de unir (esto no es frecuente, pero todavía lo he visto varias veces). Puede usar la herramienta nm para verificar lo que está incluido en una biblioteca nativa:

     $ nm -arch armv7 /path/to/libiMagSDK.a | grep IMag 0x0000f00d S _OBJC_CLASS_$_IMag [other results] 

    El resultado anterior indicaría que la class está incluida en la biblioteca nativa.