我正在尝试为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);
}
}
链接属性:
[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 来忽略此条件。
之后MonoTouch.ObjCRuntime.Class.ThrowOnInitFailure == false
iv
被创建,但无法使用(例如AddSubview(iv)
什么都不显示)。
我想 GPUImage.a 文件有问题,但我不知道如何以任何方式对其进行测试。
这是 7z,其中包含 2 个项目: TryingBindings -- 绑定本身;TryingGPUImage -- 正在使用的绑定;
提前致谢。