这是我的基本代码:
这是头文件:
/** Include the necessary things **/
Class MyClass{
private:
std::string mystring;
/**
* Declare constructor, methods, yada yada yada
**/
};
这是源文件:
MyClass::MyClass(){
mystring[0] = 0;
}
extern "C" MyClass::function(/* variables */){
cerr << mystring << endl;
}
问题似乎是我在 cerr&lt;&lt;&lt;&lt; mystring&lt;&lt; ENDL; 行。 function()需要是一个extern“C”函数,因为它作为参数传递给本机C函数。
有什么想法吗?提前谢谢。
答案 0 :(得分:1)
使类成员extern "C"
的用处有限,我建议避免使用这种将C ++方法暴露给C代码的方法。
你应该做的是创建一个包装函数,它将指向MyClass
实例的指针作为附加参数,然后执行所需的调用:
extern "C" void MyClass_function(MyClass *obj, /* variables */) {
obj->function(/* variables */);
}