【问题标题】:How to create static library from an existing framework in iOS?如何从 iOS 中的现有框架创建静态库?
【发布时间】:2012-02-23 02:55:52
【问题描述】:

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

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

【问题讨论】:

    标签: ios frameworks xamarin.ios static-libraries


    【解决方案1】:

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

    然后,只需使用 MonoTouch btouch 工具绑定静态库以在您的 MonoTouch 项目中使用即可。 Github 上有一个很好的例子来说明如何将原生库绑定到 MonoTouch。在针对模拟器 + 设备和使用 LinkWith 属性将静态库嵌入到单个 *.dll 中的指导下:

    另外,请务必在此处查看 btouch 参考文档:

    【讨论】:

    • 我接受了这个作为答案,仅仅是因为它具有指向有用的 BindingSample 的链接。感谢两位花时间回答
    • @JWB 加上你最新的支持(我的 ;-)你现在有足够的声望点来支持两个答案:-)
    • @Jeff-SoftwareResults 你知道如何从 *.framework 创建绑定库 dll 吗?
    • @Anand 我想我确实看过我对下面答案的评论。但那是六年前的事了,我根本不记得细节了。对不起
    【解决方案2】:

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

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

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

    【讨论】:

    • 我按照您的建议重命名了文件并执行了“nm filename.a”,我确实可以看到那里的所有类。我需要做进一步的工作来检查它是否正确挂在一起,但看起来不错。谢谢
    • 哇,我不知道的有用的琐事!
    • 当我尝试使用 BrotherPrinterSDK 时,我收到如下响应无法创建类型为“bpsdkBinding.BRPtouchPrintInfo”的本机实例:尚未加载本机类。可以通过将 ObjCRuntime.Class.ThrowOnInitFailure 设置为 false 来忽略此条件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-10
    • 2015-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-18
    相关资源
    最近更新 更多