我正在尝试将 C++ 库添加到 iOS 项目中。我将源代码文件添加到项目中,但似乎它们不像 C++ 代码那样被解释。
例如,我在头文件中收到以下错误:
namespace soundtouch // Unknown type name 'namespace'
{
我已经尝试将文件检查器中的类型更改为“C++ Source”和“C++ Header”——没有任何改变。
如何将 C++ 库导入 XCode 项目?
我正在尝试将 C++ 库添加到 iOS 项目中。我将源代码文件添加到项目中,但似乎它们不像 C++ 代码那样被解释。
例如,我在头文件中收到以下错误:
namespace soundtouch // Unknown type name 'namespace'
{
我已经尝试将文件检查器中的类型更改为“C++ Source”和“C++ Header”——没有任何改变。
如何将 C++ 库导入 XCode 项目?
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 代码之间的清晰边界需要一些计划,但值得进行一些前期思考。
这篇文章值得一读:
每个.m
直接或间接#import
作为任何 C++ 头文件的 Objective-C 实现文件 () 都必须通过将其文件扩展名更改为.mm
.