在过去的几天里,我一直在努力绑定我的第一个ObjC库(SVGKit)。我已经完成所有的构建和编译,但是当另一个项目引用它时,我无法使其运行。
我的绑定代码可以在这里找到:https://github.com/jamesmundy/SVGKit.Xamarin
运行时,显示以下错误:
无法创建该类型的本机实例
'SVGKitBindings.SVGKImageView':未加载本机类。
通过设置可以忽略此条件
ObjCRuntime.Class.ThrowOnInitFailure为false。
我已经检查了我使用的静态库,它支持以下平台:
胖文件:libSVGKit-iOS.1.2.0.a中的体系结构是:armv7 i386
x86_64 arm64
我相信这就是我所需要的。
我的链接器文件如下:
[程序集:LinkWith(“libSVGKit-iOS.1.2.0.a”,LinkTarget.ArmV7 |
LinkTarget.Simulator,SmartLink = true,ForceLoad = true)]
我是否必须以其他方式配置正在使用此绑定的项目?非常感谢任何帮助加载本机库的帮助。
更新1:由于提出了一个建议,我尝试编辑Linker文件以支持与静态库相同的平台,但不幸的是它没有解决问题。现在文件如下:
[程序集:LinkWith(“libSVGKit-iOS.1.2.0.a”,LinkTarget.ArmV7 |
LinkTarget.Simulator | LinkTarget.Arm64 | LinkTarget.Simulator64,
SmartLink = true,ForceLoad = true)]
我还在所有仿真器上尝试了该代码,但不幸的是仍然没有运气。
最佳答案
[assembly: LinkWith ("libSVGKit-iOS.1.2.0.a", LinkTarget.ArmV7 | LinkTarget.Simulator, SmartLink = true, ForceLoad = true)]
那可能不是您(唯一)的问题,但这是不正确的。您的
LinkTarget
应该与静态库支持的体系结构匹配。哎呀,您缺少Arm64
和Simulator64
。另外,尝试在不同的模拟器(iPhone 4S为32位,iPhone 5S为64位)或设备(还是32位和64位)上执行应用程序。这将告诉您这是一个一般性问题还是特定于体系结构的问题(并且您应该使用这些额外的信息来更新您的问题)。