2011-07-27 45 views
1

我建了一个静态库,并.h文件添加到我的项目,C++和Objective-C

中的所有类的.h文件,像这样:

class StartOp 
{ 
    static void openFiles(WavInFile **inFile, WavOutFile **outFile, const RunParameters *params); 
    static void setup(SoundTouch *pSoundTouch, const WavInFile *inFile, const RunParameters *params); 
    static void process(SoundTouch *pSoundTouch, WavInFile *inFile, WavOutFile *outFile); 
    static void detectBPM(WavInFile *inFile, RunParameters *params); 
    int start(const int nParams, const char * const paramStr[]); 
}; 

我得到这个错误:

StartOp.h:18: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'StartOp' 

**编辑* *

我通过将文件ex改为mm来解决了这个问题。 现在我想用这个代码,我想从这个类调用,这个代码是,我想打电话给他从一个Objective-C类的C++类:

#ifndef _STARTOP_H_ 
#define _STARTOP_H_ 

namespace soundtouch 
{ 

    class StartOp 
    { 
     static void openFiles(WavInFile **inFile, WavOutFile **outFile, const RunParameters *params); 
     static void setup(SoundTouch *pSoundTouch, const WavInFile *inFile, const RunParameters *params); 
     static void process(SoundTouch *pSoundTouch, WavInFile *inFile, WavOutFile *outFile); 
     static void detectBPM(WavInFile *inFile, RunParameters *params); 
     static int start(const int nParams, const char * const paramStr[]); 
    }; 
} 



#endif 

static int start(const int nParams, const char * const paramStr[]);

方法从我的objective-c iphone应用程序。

+4

'class'既不是C也不是Objective-C。看起来更像是C++ –

+0

这既不是C也不是Objective-C ... –

回答

4

您发布的代码不是C;它相当于C++。现在,Objective-C和C++可以互操作,但是你需要在Objective-C一侧使用.mm扩展。

因此,如果您要将.h.文件导入到.m文件中,您会明显发现错误,因为编译器不期待定义为class(C++)。如果您将.h文件导入到.mm文件中,那么您有一定的可能性(如果其余部分都是正确的,我的意思是)。

如果您需要更多帮助,请提供更多代码,以便我们更好地了解您正在做的事情。

+0

thx,我在第 – MTA

+0

关于你的第二个问题上添加了一些修改:你应该提供关于'start'函数的更多细节...是C函数,一个ObjC方法?更多的代码将有助于... – sergio

+0

我有一个C++代码,我发布和在这个类中的函数,我想知道我可以如何调用从目标c文件C++头中的开始方法 – MTA