包含Availability.h的OpenGLES头文件可防止CPP文件编译

时间:2012-09-21 15:54:31

标签: c++ objective-c xcode compilation include

我正在使用Xcode中的OpenGLES开发一些东西 - 它主要用于iOS,但我希望只使用OpenGLES部分C ++,因为它不使用ObjectiveC。但是OpenGLES似乎包含了需要Objective-C(Availability.h)的东西,所以CPP文件没有正确编译,因为我从NSObjCRuntime.h收到有关NSString的错误。

我理解他们,但我想知道别人如何解决这个问题。我希望能够将我的C ++文件扩展为CPP。我应该关注Xcode项目中有关如何处理CPP文件的设置吗?

由于

3 个答案:

答案 0 :(得分:0)

默认情况下,Xcode应将cpp个文件视为C ++。确保您没有在某处手动定义的特殊Objective-C定义之一,例如__OBJC__。至于Availability.h,具体来说,它不需要Objective-C(它只是预处理器的东西)所以问题可能在其他地方。

我可以在.cpp文件中使用OpenGL,编译为C ++,就像我在iOS项目中一样。

答案 1 :(得分:0)

您也可能有一个包含Objective C标头的前缀标头。如果是这种情况,您应该使用#ifdef __OBJC__围绕这些。

答案 2 :(得分:0)

我找到了它 - 最终包含了QuartzCore.h,用于CATransform3D。我忘记了我打算用另一种方法取而代之。