"本机类尚未加载"我的绑定错误

fol*_*lex 10 binding xamarin.ios ios gpuimage

我正在尝试为GPUImage项目创建绑定,但没有一个绑定类正在工作.例如,GPUImageView:

在ObjC中它被声明为这样(git中的头文件):

@interface GPUImageView : UIView <GPUImageInput>
//then some fields, properties and methods I'm not interested in
Run Code Online (Sandbox Code Playgroud)

所以,我的ApiDefinition.cs看起来像这样:

namespace GPUImage
{
    [BaseType (typeof(NSObject))]
    [Model]
    interface GPUImageInput {
    }

    [BaseType (typeof(UIView))]
    interface GPUImageView : GPUImageInput {
        [Export ("initWithFrame:")]
        IntPtr Constructor(RectangleF frame);
    }
}
Run Code Online (Sandbox Code Playgroud)

LinkWithAttributes:

[assembly: LinkWith ("libGPUImage.a", LinkTarget.Simulator | LinkTarget.ArmV7 | LinkTarget.ArmV7s, ForceLoad = true, Frameworks = "CoreMedia CoreVideo OpenGLES QuartzCore AVFoundation UIKit Foundation")]
Run Code Online (Sandbox Code Playgroud)

它构建好并创建DLL.但是当我尝试在我的项目中使用它时:

var iv = new GPUImageView (new RectangleF (0, 0, 100, 100));
Run Code Online (Sandbox Code Playgroud)

抛出异常:

无法创建"GPUImage.GPUImageView"类型的本机实例:尚未加载本机类.通过将Class.ThrowOnInitFailure设置为false可以忽略此条件.

堆栈跟踪

之后MonoTouch.ObjCRuntime.Class.ThrowOnInitFailure == false iv被创建,但无法使用(如AddSubview(iv)什么都不显示).

我想GPUImage.a文件有问题,但我不知道如何以任何方式测试它.

这里有7z,里面有2个项目:TryingBindings - 绑定本身; TryingGPUImage - 正在使用的绑定;

提前致谢.

PS 这是xamarin论坛上这篇文章的链接.

fol*_*lex 6

感谢Rolf Bjarne Kvinge

有两个问题:

1)没有编译具有LinkWith属性(libGPUImage.linkwith.cs)的文件.只需右键单击TryingBindings项目,添加,添加文件并选择它.

2)本机库不包含i386(模拟器)的代码,只包含arm(设备).如果您自己构建本机库,则可以创建包含所有体系结构代码的通用库,也可以使用多个本机库,每个库支持不同的体系结构,并且每个本地库都有一个LinkWith属性.

错误11497