在Objective-C项目中包含C ++标头会产生“Expected * before *”错误

时间:2011-07-12 14:57:24

标签: ios xcode header

我是Objective C的新手,(不幸的是)也是我正在进行的项目。我得到了一个小样本项目,它引用了我前辈的工作(用C ++编写)并将其用于iPhone应用程序(Objective C)。而不是扩展样本(它很快就脏了,我不想乱搞它)我从头开始为我的东西创建了一个新项目。为了使它工作,我需要设置与以前的库相同的链接,但是在我的设置中,我找不到任何与现有项目的差异,它将无法解决问题。

在同事和Google的帮助下,我达成了这个目标:

1)该项目包括两个库文件,libyid.a和libvrpn.a,通过Xcode的“添加文件”对话框。它会自动将库的路径添加到构建设置中的库搜索路径,并在XCode的项目文件夹结构中显示这些文件。 据我所知,这一点似乎不会引起问题。 编辑:如果我从项目中删除这些文件我得到相同的错误。我现在认为XCode可以解析标题,但无法找到实现,并且库可能已经存在但未正确设置?

2)我的一个自定义类使用

#import "DisplayYid.h"

我将文件位置的路径添加到“构建设置”中的“页眉搜索路径”,似乎找到了正常的。 (我也在某个时候通过“添加文件”对话框添加了文件,但它没有改变任何内容,所以我就这样离开了)

现在问题:在

@interface YidController : NSObject { 
    DisplayYid *myYid;
    // (etc. etc.)
}

标识符“DisplayYid”似乎仍然未知(错误:DisplayYid之前的预期说明符限定符列表)。此外,DisplayYid本身的标题中的所有类定义都包含yield

error: expected '=', ',', ';', 'asm' or '__attribute__' before '__declspec'

不幸的是,我的知识非常有限,但在我看来,XCode可以找到有问题的标题,但不知何故会以不同的格式/语言预期内容? 当我将DisplayYid.h作为项目层次结构中的文件包含在内时,我尝试将文件检查器中的文件类型设置为“C ++标题”(正如我在Google上为我的问题找到的一些命中所建议的那样),但这不是改变一件事。 我觉得我错过了一些微不足道但又至关重要的细节,但我不能确定其中的任何一个进一步测试。希望有人看到我遗失的链接?对不起,如果这太冗长了,我只是尝试包括详细的步骤,以防这是问题所在。

提前感谢您的时间;)

编辑:This question似乎是同样的问题,尤其是他从简单复制的文件中多次获取错误的事实。但是没有一个建议的解决方案对我有用。

1 个答案:

答案 0 :(得分:0)

现在已经有一段时间了,但是我抓住了那个曾经做过这个的人。他花了一个小时,但他找到了遗漏的位:在项目设置中,需要设置两个编译器标志:

-DIOS(定义标志iOS) -x objective-c ++

从那以后一切都很顺利。由于这是一个与项目相关的问题和解决方案,我应该一起删除吗?