相关疑难解决方法(0)

从"C"代码调用"C++"类成员函数

如何在"C"代码中调用"C++"类成员函数?

我有两个文件.cpp,其中我已经定义了一些带有成员函数的类和相应的" .h"文件,其中包含了一些其他帮助cpp/h文件.

现在我想在"C"文件中调用CPP文件的这些功能.我该怎么做?

c c++

16
推荐指数
1
解决办法
1万
查看次数

C 函数调用 C++ 成员函数 - 其中 C 代码由 C 编译器编译

在关闭之前阅读问题并了解为什么不同(提示:这是 C 编译器)

我用 Google 搜索并找到了很多很多关于 C 函数如何调用 C++ 成员函数的解释。

它们看起来都类似于这个问题的公认答案,来自一位非常高的代表成员。

它说

在头文件中,放入

extern "C" void* MyClass_create() {
   return new MyClass;
}
extern "C" void MyClass_release(void* myclass) {
   delete static_cast<MyClass*>(myclass);
}
extern "C" void MyClass_sendCommandToSerialDevice(void* myclass, int cmd, int params, int id) {
   static_cast<MyClass*>(myclass)->sendCommandToSerialDevice(cmd,params,id);
}
Run Code Online (Sandbox Code Playgroud)

并且,在 C 代码中,输入

void* myclass = MyClass_create();
MyClass_sendCommandToSerialDevice(myclass,1,2,3);
MyClass_release(myclass);
Run Code Online (Sandbox Code Playgroud)

这看起来很简单,但我不明白的是,头文件必须引用MyClass(不用介意static_cast),但我想用 C 编译器(gcc)而不是 C++ 编译器(g++)编译我的 C 代码)。

这是行不通的。如何从使用 C 编译器编译的 C 代码调用 C++ 成员函数?

c c++ class extern

3
推荐指数
1
解决办法
1116
查看次数

标签 统计

c ×2

c++ ×2

class ×1

extern ×1