绑定"The native class hasn't been loading"错误



我试图为GPUImage项目创建绑定,但绑定的类都没有工作。例如,GPUImageView:

在ObjC中是这样声明的(git的头文件):

@interface GPUImageView : UIView <GPUImageInput>
//then some fields, properties and methods I'm not interested in
所以,我的apidedefinition。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")]

它构建ok并创建dll。但是当我尝试在我的项目中使用它时,像这样:

var iv = new GPUImageView (new RectangleF (0, 0, 100, 100));

抛出异常:

无法创建GPUImage类型的本机实例。GPUImageView':本机类尚未加载。可以通过设置Class来忽略此条件。

异常堆栈

MonoTouch.ObjCRuntime.Class.ThrowOnInitFailure == false创建后,iv无法使用(例如AddSubview(iv)没有显示)。

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

下面是7z,里面有两个项目:tryyingbindings——绑定本身;TryingGPUImage——绑定正在使用;

提前感谢。

注:这是xamarin论坛上这篇文章的链接

感谢Rolf Bjarne Kvinge

有两个问题:

1)带有LinkWith属性的文件(libGPUImage.linkwith.cs)是没有编译。只需右键单击tryyingbindings项目,添加,添加

2)本机库只包含i386(模拟器)的代码手臂(设备)。如果您自己构建本机库,则可以这样做创建一个通用库,其中包含所有的代码架构,或者您可以使用几个本地库,每个支持一组不同的体系结构,并且每个本地库都有一个LinkWith属性。

错误11497

相关内容

最新更新