将C++代码添加到iOS项目中

5

我正在尝试将一个C++库添加到iOS项目中。我将源代码文件添加到了项目中,但似乎它们不像C++代码一样被解释。

例如,在头文件中我遇到了以下错误:

namespace soundtouch // Unknown type name 'namespace'
{

我已经尝试在文件检查器中将类型更改为“C++源”和“C++头文件”,但没有任何变化。

如何将C++库导入XCode项目?


你使用的是 .m 还是 .mm 文件? - HereTrix
以前用的是 .m 文件,改成了 .mm 文件 - 成功了! - Sergey
2个回答

7
C++源文件必须具有可识别的扩展名,例如.cpp.cxx.cc等,它们将被编译为C++文件。如果扩展名正确且被识别,则您不需要手动更改文件类型以添加文件。编译语言是根据每个模块确定的。
混合使用C++和Objective-C则是另一回事。ADC文档中有一个完整的部分介绍Objective-C++(使用.mm扩展名)。因此,如果要从Objective-C调用C++代码,则需要在.mm模块中完成。
鉴于您引用的错误,看起来您可能正在尝试在Objective-C模块中包含C++头文件。要使此工作正常,您需要将Objective-C模块重命名为.mm,然后编译器将将其视为Objective-C++。
确定C++和Objective-C代码之间的清晰边界需要一些规划,但值得一些前期思考。
这篇文章值得一读:

4

每个直接或间接 #import 任何 C++ 头文件的 Objective-C 实现文件(.m)必须通过将其文件扩展名更改为 .mm 来更改为 Objective-C++ 实现文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接