我希望使用Pure Data作为我的库的原型工具。我发现Pure Data补丁是用C语言编写的,但我的库是用C++编写的。那么我该如何在Pure Data中使用这段代码呢?由于我没有使用过纯C,我想知道如何为C++类编写C包装器,并如何实例化我的类?还是说我必须将所有内容都重写为C语言?
// The C++ implementation
class SomeObj { void func(int); };
extern "C" {
SomeObj* newSomeObj() {return new SomeObj();}
void freeSomeObj(SomeObj* obj) {delete obj;}
void SomeObj_func(SomeObj* obj, int param) {obj->func(param)}
}
// The C interface
typedef struct SomeObjHandle SomeObj;
SomeObj* newSomeObj();
void freeSomeObj(SomeObj* obj);
void SomeObj_func(SomeObj* obj, int param);
请注意,这必须是C++代码。 extern "C"
指定该函数使用C语言的命名约定。
void*
。 - David Heffernanextern "Linkage_Specification" { //code }
。这样一来,我们就告诉编译器在链接代码时要使用哪种链接规范。 - Alok Save你完全可以从C++中调用C代码,没有问题!
最差的情况是,您可能需要显式地将您从Pure Data调用的函数声明为“extern C”。但几乎可以肯定,Pure Data已经为您做到了这一点(您可能会在Pure Data头文件中看到“extern C”)。
以下是更多信息:
http://msdn.microsoft.com/en-us/library/0603949d%28v=vs.80%29.aspx
希望这能帮到你!