ios - que - "Error de la clase nativa no se ha estado cargando" con mis enlaces
mobincube que es (1)
Gracias a Rolf Bjarne Kvinge
Hay dos problemas:
1) El archivo con el atributo LinkWith (libGPUImage.linkwith.cs) no está compilado. Simplemente haga clic con el botón derecho en el proyecto TryingBindings, agregue, agregue archivos y selecciónelo.
2) La biblioteca nativa no contiene el código para i386 (simulador), solo el brazo (dispositivo). Si está construyendo la biblioteca nativa usted mismo, puede crear una biblioteca universal que contenga código para todas las arquitecturas, o puede usar varias bibliotecas nativas, cada una soportando un conjunto diferente de arquitecturas, y solo tiene un atributo LinkWith para cada biblioteca nativa .
Estoy intentando crear enlaces para el proyecto GPUImage , pero ninguna de las clases enlazadas está funcionando. Por ejemplo, GPUImageView:
En ObjC se declara así ( encabezado en git ):
@interface GPUImageView : UIView <GPUImageInput>
//then some fields, properties and methods I''m not interested in
Entonces, mi ApiDefinition.cs se ve así:
namespace GPUImage
{
[BaseType (typeof(NSObject))]
[Model]
interface GPUImageInput {
}
[BaseType (typeof(UIView))]
interface GPUImageView : GPUImageInput {
[Export ("initWithFrame:")]
IntPtr Constructor(RectangleF frame);
}
}
LinkWithAttributes:
[assembly: LinkWith ("libGPUImage.a", LinkTarget.Simulator | LinkTarget.ArmV7 | LinkTarget.ArmV7s, ForceLoad = true, Frameworks = "CoreMedia CoreVideo OpenGLES QuartzCore AVFoundation UIKit Foundation")]
Construye bien y crea dll. Pero cuando intento usarlo en mi proyecto de esta manera:
var iv = new GPUImageView (new RectangleF (0, 0, 100, 100));
Excepción lanzada:
No se pudo crear una instancia nativa del tipo ''GPUImage.GPUImageView'': la clase nativa no se ha cargado. Es posible ignorar esta condición estableciendo Class.ThrowOnInitFailure en false.
Después de crear MonoTouch.ObjCRuntime.Class.ThrowOnInitFailure == false
iv
, pero inutilizable (por ejemplo, AddSubview(iv)
no muestra nada).
Supongo que hay algo mal con el archivo GPUImage.a, pero no sé cómo probarlo de ninguna manera.
Aquí está 7z con 2 proyectos en él: TryingBindings - enlaces en sí mismos; TryingGPUImage - enlaces en uso;
Gracias por adelantado.
PS Aquí está el enlace a esta publicación en los foros de xamarin.