5

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

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

namespace soundtouch // Unknown type name 'namespace'
{

我已经尝试将文件检查器中的类型更改为“C++ Source”和“C++ Header”——没有任何改变。

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

4

2 回答 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 代码之间的清晰边界需要一些计划,但值得进行一些前期思考。

这篇文章值得一读:

于 2013-10-02T14:04:46.530 回答
4

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

于 2013-10-02T14:03:39.947 回答