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

如何在iOS中从现有框架创建静态库?,ios,frameworks,xamarin.ios,static-libraries,Ios,Frameworks,Xamarin.ios,Static Libraries,第三方供应商为我提供了一个iPhone硬件配件框架。所以我有一个类似Device.framework的文件夹。该文件夹中有一个二进制文件和一组.h文件。这里有关于如何将其添加到iOS项目并使用其中包含的类的说明。然而,我实际上使用的是MonoTouch,希望使用静态库 有没有办法创建一个静态库,使框架中的所有类都可以在静态库中使用?因此,在我的MonoTouch项目中,我将链接静态库并访问该框架。将该二进制文件重命名为Device.a。您可以这样做,因为您提到的框架不是由Apple完成的,因此它

第三方供应商为我提供了一个iPhone硬件配件框架。所以我有一个类似Device.framework的文件夹。该文件夹中有一个二进制文件和一组.h文件。这里有关于如何将其添加到iOS项目并使用其中包含的类的说明。然而,我实际上使用的是MonoTouch,希望使用静态库


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

将该二进制文件重命名为
Device.a
。您可以这样做,因为您提到的框架不是由Apple完成的,因此它必须是静态库,而不是动态库

确保您的项目链接到该库(
Device.a


在项目中包含标题,并在适当的地方引用它们。

框架只是一个包含:静态库、标题和相关元数据的包。复制并粘贴.framework并提取静态*.a文件和相关头文件

然后,只需使用MonoTouch btouch工具绑定静态库,以便在MonoTouch项目中使用。有一个很好的例子说明了如何在Github上将本机库绑定到MonoTouch。关于瞄准模拟器+设备并使用LinkWith属性将静态库嵌入单个*.dll的指南:

此外,请确保在此处查看B触摸参考文档:


我按照您的建议重命名了该文件,并执行了“nm filename.a”,我确实可以看到那里的所有类。我需要做进一步的工作,以检查它是否正确地连接在一起,但它看起来不错。谢谢,我不知道的有用的琐事!当我尝试使用BrotherpIntersdk时,得到如下响应:无法创建类型为“bpsdkBinding.BRPtouchPrintInfo”的本机实例:本机类尚未加载。通过将ObjCRuntime.Class.ThrowOnInitFailure设置为false可以忽略此条件。我接受这一个作为答案,只是因为它有到BindingSample的链接,这很有用。谢谢你们两位花时间和我聊天answer@JWB使用您最近的upvote(我的;-)您现在有足够的声誉点数来对两个答案进行upvote:-)@Jeff SoftwareResults您找到如何从*.framework创建绑定库dll了吗?@Ana我想我看到了我对下面答案的评论。但那是六年前的事了,我根本不记得细节了。很抱歉