我正在尝试将C ++库添加到iOS项目中。我将源代码文件添加到项目中,但似乎它们不像C ++代码那样被解释。
例如,我在头文件中收到以下错误:
namespace soundtouch // Unknown type name 'namespace'
{
我已经尝试将文件检查器中的类型更改为“C ++ Source”和“C ++ Header” - 没有任何更改。
如何将C ++库导入XCode项目?
答案 0 :(得分:7)
C ++源文件必须具有可识别的扩展名; .cpp
,.cxx
,.cc
等等,它们将被编译为C ++文件。如果在添加文件时扩展名正确(并已识别),则无需手动更改文件类型。编译语言是基于每个模块确定的。
混合C ++和Objective-C是一个不同的故事。在Objective-C ++的ADC文档中有一整节(使用.mm
扩展名)。因此,如果您想从Objective-C调用C ++代码,则需要从.mm
模块完成。
鉴于您引用的错误,看起来您可能正在尝试在Objective-C模块中包含C ++头文件。要使其工作,您需要将Objective-C模块重命名为.mm
,然后编译器将其视为Objective-C ++。
需要一些计划来确定C ++和Objective-C代码之间的清晰边界,但值得一些前瞻性思考。
这篇文章值得一读:
答案 1 :(得分:4)
直接或间接地.m
任何C ++头文件的每个Objective-C实现文件(#import
)必须通过将其文件扩展名更改为Objective-C ++实现文件来更改为.mm
。