我可以将我的c ++类编译成静态库(.a)以便在我的iPhone项目中使用吗?

时间:2011-07-19 16:44:46

标签: iphone c++ objective-c xcode

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

非常感谢。

2 个答案:

答案 0 :(得分:3)

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

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

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

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

答案 1 :(得分:1)

是的,you can.

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