在过去的几天里,我一直在努力绑定我的第一个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应该与静态库支持的体系结构匹配。哎呀,您缺少Arm64Simulator64

另外,尝试在不同的模拟器(iPhone 4S为32位,iPhone 5S为64位)或设备(还是32位和64位)上执行应用程序。这将告诉您这是一个一般性问题还是特定于体系结构的问题(并且您应该使用这些额外的信息来更新您的问题)。

10-06 00:37