我试图为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