如何在iOS中从现有框架创建静态库?

16

我收到了一个第三方供应商提供的iPhone硬件附件框架。所以我有一个名为Device.framework的文件夹。文件夹内包含一个二进制文件和一系列.h文件。有说明书教我如何将其添加到iOS项目中并使用其中包含的类。然而,我实际上正在使用MonoTouch,并希望使用静态库。

是否有一种方法可以创建一个静态库,使得该框架中所有的类都可在静态库中使用?因此,在我的MonoTouch项目中,我会链接该静态库并可访问该框架。

2个回答

13
一个 *.framework 只是一个包含静态库、头文件以及相关元数据的文件包。复制并粘贴 .framework 文件,并提取其内部的静态 *.a 文件和相关的头文件。
然后,只需使用 MonoTouch btouch 工具来绑定该静态库,以供 MonoTouch 项目使用。Github 上有一个很好的示例,介绍了如何将本地库绑定到 MonoTouch 中,其中包括如何针对模拟器 + 设备进行设置,以及如何使用 LinkWith 属性将静态库嵌入单个 *.dll 文件中: 同时,请务必查看此处的 btouch 参考文档:

我选择这个作为答案,因为它有 BindingSample 的链接,这对我很有用。感谢两位回答者抽出时间来回答。 - Jeff - Software Results
@JWB,恭喜你最新的点赞(我的;-)让你有足够的声望点数来点赞两个答案了 :-) - poupou
@Jeff-SoftwareResults,你搞清楚了怎样可以从*.framework创建绑定库dll了吗? - Anand
@Anand,我想我是看了下面回答中的评论。但那是六年前的事情了,我只是不记得具体细节了。抱歉。 - Jeff - Software Results

8

将该二进制文件重命名为 Device.a。这是因为你所提到的框架不是由苹果完成,因此它必须是一个静态库而不是动态库。

确保你的项目链接了该库 (Device.a)。

在你的项目中包含头文件,并在适当的地方引用它们。


3
我已按照您的建议重命名了该文件,并执行了“nm filename.a”命令,我确实可以看到所有的类。我需要进一步的工作来检查它们是否全部正确地连接在一起,但看起来很不错。谢谢。 - Jeff - Software Results
哇,这是一条我不知道的有用的小知识! - jstedfast
当我尝试使用BrotherPrinterSDK时,我收到了以下响应:无法创建类型'bpsdkBinding.BRPtouchPrintInfo'的本机实例:本机类尚未加载。可以通过将ObjCRuntime.Class.ThrowOnInitFailure设置为false来忽略此条件。 - Anand

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接