Próbuję utworzyć wiązania dla projektu GPUImage, ale żadna z klas powiązanych nie działa. Na przykład GPUImageView:Błąd "natywna klasa nie ładuje się" z powiązaniami
W ObjC to zadeklarowana następująco (header in git):
@interface GPUImageView : UIView <GPUImageInput>
//then some fields, properties and methods I'm not interested in
Więc, moi ApiDefinition.cs wygląda następująco:
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")]
To buduje ok i tworzy bibliotekę dll. Ale gdy próbuję go użyć w moim projekcie tak:
var iv = new GPUImageView (new RectangleF (0, 0, 100, 100));
Wyjątek throwed:
Nie można utworzyć natywną wystąpienie typu „GPUImage.GPUImageView”: natywny klasa nie ma został załadowany. Można zignorować ten warunek, ustawiając Class.ThrowOnInitFailure na wartość false.
Po MonoTouch.ObjCRuntime.Class.ThrowOnInitFailure == false
iv
zostało utworzone, ale mogą być użyte (np AddSubview(iv)
pokazują żadnych).
Przypuszczam, że coś jest nie tak z plikiem GPUImage.a, ale nie wiem, jak go przetestować w jakikolwiek sposób.
Here is 7z z 2 projektami: TryingBindings - same wiązania; TryingGPUImage - powiązania w użyciu;
Z góry dziękuję.
P.S. Here is the link to this post on xamarin forums.
można udostępnić pliki nagłówkowe do biblioteki objective-c? Nie widzę ich w twoim pliku 7z. – jonathanpeppers
@jonathanpeppers, https: // github.com/BradLarson/GPUImage/blob/master/framework/Source/GPUImageView.h – folex
Czy pusty konstruktor działa dla ciebie? Nie widzę tu żadnej metody "init". – jonathanpeppers