C# Xamarin.iOS与第三方框架的绑定

C# Xamarin.iOS与第三方框架的绑定,c#,ios,xamarin,xamarin.ios,xamarin.ios-binding,C#,Ios,Xamarin,Xamarin.ios,Xamarin.ios Binding,我正在尝试更新指向我管理的代码的Xamarin.iOS绑定,现在我遇到了问题,因为我用.framework替换了外部.a库引用。特别是,当我试图编译我的绑定时,我替换的库的本机链接失败了 Native linking error: framework not found SVGKit for architecture arm64/i386/armv7/armv7s (MT5209) 我知道SVGKit支持这些体系结构,但我不确定从.framework引用时如何将它们包含在生成的二进制文件中。您

我正在尝试更新指向我管理的代码的Xamarin.iOS绑定,现在我遇到了问题,因为我用.framework替换了外部.a库引用。特别是,当我试图编译我的绑定时,我替换的库的本机链接失败了

Native linking error: framework not found SVGKit for architecture arm64/i386/armv7/armv7s (MT5209)

我知道SVGKit支持这些体系结构,但我不确定从.framework引用时如何将它们包含在生成的二进制文件中。

您好,我会这样做来诊断问题

首先,我将使用二进制文件上的
文件
命令检查
SVGKit.framework/SVGKit
伪框架(伪装为框架的静态库)还是动态框架(iOS 8+仅支持

file Foo.framework/Foo
Foo.framework/Foo: Mach-O universal binary with 4 architectures
Foo.framework/Foo (for architecture i386):  Mach-O dynamically linked shared library i386
Foo.framework/Foo (for architecture x86_64):Mach-O 64-bit dynamically linked shared library x86_64
Foo.framework/Foo (for architecture armv7): Mach-O dynamically linked shared library arm
Foo.framework/Foo (for architecture arm64): Mach-O 64-bit dynamically linked shared library

file Bar.framework/Bar
Bar.framework/Bar: Mach-O universal binary with 4 architectures
Bar.framework/Bar (for architecture armv7): current ar archive random library
Bar.framework/Bar (for architecture i386):  current ar archive random library
Bar.framework/Bar (for architecture x86_64):current ar archive random library
Bar.framework/Bar (for architecture arm64): current ar archive random library
Foo
是一个动态库,请注意
Mach-O
Bar
是一个伪装成框架的静态库请注意
ar

现在,如果它是一个伪框架(静态库),只需将
SVGKit.framework/SVGKit
二进制文件重命名为
SVGKit.a
,并将其添加到绑定项目中,就可以正常工作了

如果它是一个动态框架,则遵循以下步骤。[0]


[0]:只需补充说明,一旦Xamarin Studio 6.0发布,您就不需要手动修改绑定项目
.csproj
文件,您可以在IDE本身中进行修改:)

谢谢您的反馈。我按照建议做了,并确定这是一个动态框架。然后,我按照说明向绑定的CSProj文件添加了一个元素,该元素具有指向框架的..\..\relative\路径。同样的构建错误。另外,在错误发生之前,在构建日志的任何地方都并没有框架的记录。嗯,奇怪的是,你们可以看看我参和的一个项目,看看它是否适合你们,它也在使用一个动态框架。如果对你有效,请告诉我。此外,如果您在某处共享或拥有您的项目(即github),我可以看一看:)