未知的类型名称'class'; 你是否想说'Class'? AurioTouch

7

我正在尝试将AurioTouch项目中的代码移植到我的项目中。

但是我遇到了很多错误:

Unknown type name 'class'; did you mean 'Class'?

例如,在 FFTBufferManager.h 文件中:

...

#include <AudioToolbox/AudioToolbox.h>
#include <libkern/OSAtomic.h>

#include "SpectrumAnalysis.h"

class FFTBufferManager
{
public:
    FFTBufferManager(UInt32 inNumberFrames);
    ~FFTBufferManager();

我试图将编译器更改为LLVM GCC 4.2,但是它会产生许多其他错误:

Expected '=', ',', ';', 'asm' or '__attribute__' before 'FFTBufferManager'

我做错了什么?

8
你很可能在SpectrumAnalysis.h中忘记了一个; - KillianDS
@LordPingvin:你好...你能解决这个问题吗?我现在也遇到了类似的问题。你能帮我吗? - The X-Coder
@Ajitthala 是的,我解决了这个问题。你应该将所有文件的扩展名从 .m 改为 .mm。这对我有用。 - LordPingvin
@LordPingvin:我创建了一个独立的项目,如果我在该项目中导入所有auriotouch的文件,它可以正常工作。但是在我的主要项目中无法工作,即使我将类文件的扩展名从.m更改为.mm也不行?我可以把那个项目通过邮件发给你,这样你就可以检查一下了? - The X-Coder
@Ajitthala 是的,当然可以。您可以将您的项目上传到文件服务器(例如 Dropbox),并在此处发布链接。 - LordPingvin
显示剩余8条评论
1个回答

8
要混合使用C++和Objective-C,您需要使用.mm扩展名。但是,如果您的类只是C++(并且仅包括C/C++头文件),则可以使用普通的.cpp扩展名。

.mm
此扩展名的源文件除了Objective-C和C代码外,还可以包含C++代码。仅当您实际从Objective-C代码中引用C++类或功能时,才应使用此扩展名。


@Joe,你能否详细提供解决方案,因为我遇到了同样的问题。 - Developer
@Harsh,解决方案是将 .m 扩展名更改为 .mm。 - Joe
@Joe 谢谢你的回复,Joe。我也尝试了同样的方法,但仍然遇到了相同的错误!我不知道该如何解决这个问题。 - Developer
@Harsh 开一个新问题,包括最小的代码示例以复制问题并包含错误消息。完成后,请回复链接。 - Joe
@Joe 好的 Joe!我几乎解决了那个问题,但卡在了另一个地方,我会在那个问题中描述。感谢您的响应和合作! - Developer
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接