GPUImageプロジェクトのバインドを作成しようとしていますが、バインドされたクラスがどれも機能していません。たとえば、GPUImageView:
ObjC では、次のように宣言されています ( git のヘッダー):
@interface GPUImageView : UIView <GPUImageInput>
//then some fields, properties and methods I'm not interested in
したがって、私の ApiDefinition.cs は次のようになります。
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")]
正常にビルドされ、dll が作成されます。しかし、私のプロジェクトで次のように使用しようとすると:
var iv = new GPUImageView (new RectangleF (0, 0, 100, 100));
スローされた例外:
タイプ 'GPUImage.GPUImageView' のネイティブ インスタンスを作成できませんでした: ネイティブ クラスがロードされていません。Class.ThrowOnInitFailure を false に設定することで、この状態を無視することができます。
AfterMonoTouch.ObjCRuntime.Class.ThrowOnInitFailure == false
iv
が作成されましたが、使用できません (例:AddSubview(iv)
何も表示されません)。
GPUImage.a ファイルに何か問題があると思いますが、それをテストする方法がわかりません。
2 つのプロジェクトを含む7zを次に示します。 TryingBindings -- バインディング自体。TryingGPUImage -- 使用中のバインディング。
前もって感謝します。