2012-02-23 219 views
6

我想将AurioTouch项目的代码移到我的项目中。 但我有许多错误:未知类型名称'class';你的意思是'班'? 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 2012-02-23 15:25:21

+0

我想如果你删除它包括工作?尝试纠正这些文件,然后再开始纠正这一问题。 – Default 2012-02-23 15:26:14

+0

SpectrumAnalysis.h是正确的。 AurioTouch项目编译并运行良好。但是当我将它的文件添加到我的项目中时,会弹出很多错误。 – LordPingvin 2012-02-23 15:40:19

回答

8

要混合使用C++和Objective-C,您需要使用.mm extension。但是,如果你的类只有C++(并且只包含C/C++头文件),那么你可以使用正常的.cpp扩展名。

.mm
与此扩展可以包含除了Objective-C和C代码C++代码的源文件。只有当您实际参考Objective-C代码中的C++类或 的功能时,才应使用此扩展名 。

+0

什么是.h文件,其中C++类被定义?应该更改哪个扩展? – peetonn 2012-06-01 18:06:18

+0

@peetonn .h没问题,因为它们没有被编译。您也可以自由使用.hh和.hpp。因为我有同样的问题 – Joe 2012-06-01 19:55:46

+0

@Joe能否请您提供datil的解决方案,我也一样,但仍然得到同样的错误!我不知道如何解决这个问题。 – Developer 2012-06-11 07:19:00