XCode认为C++;在构建iOS时,文件是C吗? 我正在xC5.1.1中工作C++项目。这个项目在OSX上编译得很好,但是当我为iOS构建时,我遇到了一个问题。编译器产生错误,认为它认为某些文件是C,而不是C++。有问题的文件似乎都是仅头文件,没有相应的cpp文件

XCode认为C++;在构建iOS时,文件是C吗? 我正在xC5.1.1中工作C++项目。这个项目在OSX上编译得很好,但是当我为iOS构建时,我遇到了一个问题。编译器产生错误,认为它认为某些文件是C,而不是C++。有问题的文件似乎都是仅头文件,没有相应的cpp文件,c++,ios,xcode,compilation,C++,Ios,Xcode,Compilation,作为背景,该项目基于Cocos2d-X3.0,并在几周前为iOS fine编译。从那以后,我又加了一个,我知道它做了一些我无法理解的非标准的事情 以下是我遇到的一些错误: namespace fastdelegate { …产生以下错误: [...]/jlsignal/FastDelegate.h:142:1: Unknown type name 'namespace' [...]/jlsignal/FastDelegate.h:142:23: Expected ';' after top l

作为背景,该项目基于Cocos2d-X3.0,并在几周前为iOS fine编译。从那以后,我又加了一个,我知道它做了一些我无法理解的非标准的事情

以下是我遇到的一些错误:

namespace fastdelegate {
…产生以下错误:

[...]/jlsignal/FastDelegate.h:142:1: Unknown type name 'namespace'
[...]/jlsignal/FastDelegate.h:142:23: Expected ';' after top level declarator
此外,查找标准库时遇到的问题:

#include <new>

堆栈溢出问题表明编译器试图将项目构建为C而不是C++,这似乎符合这些症状,但似乎奇怪的是它只与这一个特定的库隔离。 我想知道是否有一些构建阶段或特定于XCode的地方我忽略了。谢谢

如有任何建议,将不胜感激

编辑:有些人建议我将文件从.m重命名为.mm,但该文件是.h头文件,因此我无法遵循此建议。项目中的所有其他C++文件都是.cp文件,并且项目在C++中已经成功编译,直到我添加了这个库。
编辑2:好的,我已经让它工作了。事实证明,关于.m vs.mm的建议毕竟是正确的。这一切都归结为这样一个事实:在Cocos2d-x中,ios构建与mac构建有一个单独的主文件,称为main.m。我把它改成main.mm,一切都很好。整个项目都是C++的,所以编译器是在某种程度上解决的,但是这里有什么东西被绊倒了。< /P> < P> XC++对任何名为“代码>文件名.mm < /Cord>”的文件激活C++编译器。我猜您的文件被命名为“代码>文件名.m>代码> .< /p> < p> xCube激活C++编译器,用于命名为“代码>文件名.mm < /COD>的任何文件。我猜您的文件名为
filename.m

将.m文件重命名为.mm在文件列表中选择文件,打开文件属性面板。这里有一个部分可以指定文件的类型。@HotLicks-Hi。我尝试将类型设置为“C++头”,但没有效果。此外,项目已经有许多头文件,它已经编译成C++,即使它们的“类型”被设置为默认“C标题”,我敢打赌,问题是你把那个.h文件导入到C++以外的东西。如果您这样做,您需要添加#If条件逻辑来跳过仅限C++的语句。谢谢。您让我找到了正确的位置。将.m文件重命名为.mm在文件列表中选择文件,打开文件属性面板。这里有一个部分可以指定文件的类型。@HotLicks-Hi。我尝试将类型设置为“C++头”,但没有效果。此外,项目已经有许多头文件,它已经编译成C++,即使它们的“类型”被设置为默认“C标题”,我敢打赌,问题是你把那个.h文件导入到C++以外的东西。如果您这样做,您需要添加#If条件逻辑来跳过仅限C++的语句。谢谢。你让我在正确的地方看。它实际上被称为FASTActual.h,并且是只头(所以NO.M或.mm)所有其他文件是.CPP,并且项目是C++项目。它实际上被称为FASTActoPATH.H,并且是只头(所以NO.M或.mm)所有其他文件是.CPP,并且项目是C++项目。
[...]]/jlsignal/ScopedAllocator.h:7:10: 'new' file not found