Sto provando a creare associazioni per il progetto GPUImage, ma nessuna delle classi associate funziona. Per esempio, GPUImageView:"La classe nativa non ha caricato" errore con i miei binding
In objC è dichiarato come questo (header in git):
@interface GPUImageView : UIView <GPUImageInput>
//then some fields, properties and methods I'm not interested in
Quindi, le mie ApiDefinition.cs assomiglia a questo:
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")]
Costruisce bene e crea dll. Ma quando cerco di usarlo nel mio progetto come questo:
var iv = new GPUImageView (new RectangleF (0, 0, 100, 100));
Eccezione throwed:
Impossibile creare un'istanza nativa del tipo 'GPUImage.GPUImageView': la classe nativa non ha stato caricato È possibile ignorare questa condizione impostando Class.ThrowOnInitFailure su false.
Dopo MonoTouch.ObjCRuntime.Class.ThrowOnInitFailure == false
iv
è stato creato, ma non utilizzabile (ad esempio AddSubview(iv)
spettacolo niente).
Suppongo che ci sia qualcosa di sbagliato nel file GPUImage.a, ma non so come testarlo in alcun modo.
Here is 7z con 2 progetti in esso: TryingBindings - binding stessi; TryingGPUImage - binding in use;
Grazie in anticipo.
P.S. Here is the link to this post on xamarin forums.
Puoi condividere i file di intestazione per la libreria Objective-C? Non li vedo nel tuo file 7z. – jonathanpeppers
@jonathanpeppers, https: // github.com/BradLarson/GPUImage/blob/master/framework/Source/GPUImageView.h – folex
Il costruttore vuoto funziona per te? Non vedo alcun metodo 'init' qui. – jonathanpeppers