【问题标题】:Can I compile my c++ class into static library (.a) in order to use in my iPhone project?我可以将我的 c++ 类编译成静态库 (.a) 以便在我的 iPhone 项目中使用吗?
【发布时间】:2011-07-20 13:57:15
【问题描述】:

由于我的图像处理类是用 c++ 编写的,我想在我的 iPhone 项目中使用它,是否可以将此 c++ 类编译成静态库 (.a) 并在我的 iPhone 项目中使用它?我也想知道在Mac OS-X上将c++源文件编译成静态库(.a)的命令,以及我们如何在Xcode中调用编译成静态库(.a)的c++函数。

非常感谢。

【问题讨论】:

    标签: iphone c++ objective-c xcode


    【解决方案1】:

    为了让您的生活更轻松,您可以直接将您的 C++ 源文件包含到您的 Xcode 项目中。事实上,如果你用 .mm 扩展名来命名你的 Objective-C 文件,它们将能够直接使用 C++ 源代码(这实际上称为 Objective C++)。

    另一方面,您可以使用处理类创建一个静态库并将其链接到您的目标,但仍然需要使用 Objective C++(即 .mm 扩展名),因为无论如何您都需要包含C++ 头文件并使用编译器 ABI(二进制接口)链接到 C++ 二进制文件。

    从 C++ 源代码创建静态库与从 C 或 Objective-C 代码创建静态库没有什么不同(因为创建静态库只是编译+归档)。

    另请参阅S.O. 的这篇帖子,了解有关创建通用静态库的过程的更多详细信息。

    【讨论】:

      【解决方案2】:

      是的,you can.

      唯一需要注意的是,在上面的链接中,作者在 .m 文件和头文件中创建了一个 Objective-C 类,但在您的情况下,您需要导入您的 .cpps 和头文件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多