10

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 -- 使用中のバインディング。

前もって感謝します。

PS xamarin フォーラムのこの投稿へのリンクは次のとおりです。

4

1 に答える 1