C++ 能否导入C++;分类到任何Obj-C头中?

C++ 能否导入C++;分类到任何Obj-C头中?,c++,objective-c,C++,Objective C,我有一些第三方资源,我正试图集成到我的应用程序中。大部分代码都是C++的,而且在它们的示例中工作得很好。我将原始代码复制到我的项目中,现在它失败了,因为它在Obj-C头中看到C++。 更新: 讨论中的源代码文件名为“SampleApplicationSession.mm”,它与“SampleApplicationSession.h”关联。h导入C++头文件,并导出使用在这些头中找到的类型的几种方法,例如: (void)onQCARUpdate:(QCAR::State*)State 如果导入

我有一些第三方资源,我正试图集成到我的应用程序中。大部分代码都是C++的,而且在它们的示例中工作得很好。我将原始代码复制到我的项目中,现在它失败了,因为它在Obj-C头中看到C++。 更新:

讨论中的源代码文件名为“SampleApplicationSession.mm”,它与“SampleApplicationSession.h”关联。h导入C++头文件,并导出使用在这些头中找到的类型的几种方法,例如:

  • (void)onQCARUpdate:(QCAR::State*)State
如果导入包含这些类型的C++头,则会得到错误:

未知类型名称“命名空间”

因此,尽管代码是.mm,编译器似乎也没有识别出头是Obj-C++。

Ahhh,好的,明白了

这实际上是一个编译器错误消息问题。问题不在于它声称的文件,而在于导入该文件的文件

所以我试图修复SampleApplicationSession.h,而实际上是mapVC.m导致了它。简单地说,一次导入导致问题消失


现在显而易见的解决方案是将mapVC.m重命名为mapVC.mm,但这会导致在以前的工作代码中出现各种错误,即使没有导入。我想我将艰难地完成这一过程……

QCAR::State的问题是它不会用C或纯Objective-C代码编译。以下是我在类似情况下使用的解决方案:

#ifdef __cplusplus
typedef QCAR::State QCARState;
#else
typedef struct QCARState__ QCARState;
#endif

- (void)onQCARUpdate:(QCARState *)state;
现在每种语言都很快乐。您甚至可以让普通C代码在QCARState*指针之间传递。或者,如果您有一个类型为QCARState*的属性,您可以用普通的Objective-C代码编写

someObject.qcarState = otherObject.qcarState

它是有效的。举个例子

它是如何失败的?是否有某种错误消息?更可能是从一个以上的文件中包含了头文件,包括简单的Objor的文件。您尝试过将代码> > Objc++→代码>发送到CLAN编译器吗?等等,这是否不同于导入的C++文件,Matrys.h,没有关联的CPP吗?MVC VC调用C++类的方法吗?它只是间接地引用一个包含单个C++类型(矩阵)的UIVIEW子类。