【发布时间】:2011-07-20 13:57:15
【问题描述】:
由于我的图像处理类是用 c++ 编写的,我想在我的 iPhone 项目中使用它,是否可以将此 c++ 类编译成静态库 (.a) 并在我的 iPhone 项目中使用它?我也想知道在Mac OS-X上将c++源文件编译成静态库(.a)的命令,以及我们如何在Xcode中调用编译成静态库(.a)的c++函数。
非常感谢。
【问题讨论】:
标签: iphone c++ objective-c xcode
由于我的图像处理类是用 c++ 编写的,我想在我的 iPhone 项目中使用它,是否可以将此 c++ 类编译成静态库 (.a) 并在我的 iPhone 项目中使用它?我也想知道在Mac OS-X上将c++源文件编译成静态库(.a)的命令,以及我们如何在Xcode中调用编译成静态库(.a)的c++函数。
非常感谢。
【问题讨论】:
标签: iphone c++ objective-c xcode
为了让您的生活更轻松,您可以直接将您的 C++ 源文件包含到您的 Xcode 项目中。事实上,如果你用 .mm 扩展名来命名你的 Objective-C 文件,它们将能够直接使用 C++ 源代码(这实际上称为 Objective C++)。
另一方面,您可以使用处理类创建一个静态库并将其链接到您的目标,但仍然需要使用 Objective C++(即 .mm 扩展名),因为无论如何您都需要包含C++ 头文件并使用编译器 ABI(二进制接口)链接到 C++ 二进制文件。
从 C++ 源代码创建静态库与从 C 或 Objective-C 代码创建静态库没有什么不同(因为创建静态库只是编译+归档)。
另请参阅S.O. 的这篇帖子,了解有关创建通用静态库的过程的更多详细信息。
【讨论】:
是的,you can.
唯一需要注意的是,在上面的链接中,作者在 .m 文件和头文件中创建了一个 Objective-C 类,但在您的情况下,您需要导入您的 .cpps 和头文件。
【讨论】: