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

Can I compile my c++ class into static library (.a) in order to use in my iPhone project?

本文关键字:我的 项目 iPhone 编译 c++ 静态 我可以      更新时间:2023-10-16

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

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

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

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

请参阅S.O.的这篇文章,了解创建通用静态库的更多细节。

可以。

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