使用Objective-C框架创建MonoTouch绑定

时间:2013-03-06 19:33:43

标签: objective-c binding xamarin.ios

我有一个Objective-C库,我想在monotouch中绑定(xamarin studio)。这个库使用的是我从第三方供应商下载的框架('Firebase'框架)。我编译了库,它在XCode上构建得很好,然后为i386和armv7架构创建了.a文件,并使用lipo生成我的lib.a文件。现在,我创建了一个绑定项目,并将我的.a文件添加到其中,生成.linkwith.cs文件。但是,当我使用绑定项目时,它给出了以下错误:

“ld:框架未找到Firebase”

我的问题是 - 如何指定Firebase框架?我试过这个:

[assembly: LinkWith ("libtestfirebaseclient.a", LinkTarget.ArmV7 | LinkTarget.Simulator, ForceLoad = true, Frameworks = "CFNetwork Security Foundation Firebase")] 

然而,问题似乎仍未得到解决。有人能告诉我如何为依赖于第三方框架的obj-c库创建绑定吗?

2 个答案:

答案 0 :(得分:2)

您可能不需要将Firebase作为平台引用,而是(如果它未包含在libtestfirebaseclient.a中)为其添加新的LinkWith属性:

[assembly: LinkWith ("libtestfirebaseclient.a", LinkTarget.ArmV7 | LinkTarget.Simulator, ForceLoad = true, Frameworks = "CFNetwork Security Foundation")]
[assembly: LinkWith ("libfirebase.a", LinkTarget.ArmV7 | LinkTarget.Simulator, ForceLoad = true, Frameworks = "CFNetwork Security Foundation")]

答案 1 :(得分:1)

我建议您确保已完成所有必要的过程,例如完成ApiDefinition.cs文件并在StructsAndEnums.cs文件中定义所有必需的枚举等。此外,我非常确定您不需要在LinkWith框架部分中包含Firebase。

在我看来,解决问题的最佳方法是查看已在monotouch-bindings存储库中绑定的现有库,并确切了解所有需要布局的内容。下载已绑定的库,查看每个事物的对应方式,并为您的项目执行相同的操作。

有关Xamarin网站上binding Objective-C Libraries的详细指南以及Binding Types Reference Guide作为参考。