2

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

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

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

4

1 回答 1

3

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

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

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-OBar是伪装成框架的静态库 注意ar

现在,如果它是一个假框架(静态库),只需获取SVGKit.framework/SVGKit二进制文件并将其重命名并将其SVGKit.a添加到您的绑定项目中,它应该像往常一样工作

如果它是一个动态框架,那么请按照这些说明进行操作。[0]

[0]:附带说明一下,一旦 Xamarin Studio 6.0 发布,您将无需手动修改绑定项目.csproj文件,您将能够在 IDE 本身内完成它:)

于 2016-04-12T22:22:46.863 回答