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