如何从外部"C"函数访问类变量?

How do I access a class variable from an extern "C" function?

本文关键字:访问 类变量 函数 从外部      更新时间:2023-10-16

我的基本代码:

头文件:

/** 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 <<mystring & lt; & lt;endl;function()需要是外部"C"函数,因为它是作为参数传递给本机C函数的。

任何想法?

创建类成员extern "C"的作用有限,我建议避免使用这种将c++方法暴露给C代码的方法。

您应该做的是创建一个包装器函数,该函数将指向MyClass实例的指针作为附加参数,并执行所需的调用:

extern "C" void MyClass_function(MyClass *obj, /* variables */) {
    obj->function(/* variables */);
}