使用C++代码从C代码回调
Callbacks from C code using C++ code?
我使用的是一个用纯C编写的驱动程序。它注册了一些回调。当调用这些回调时,它们将与C++代码交互。
我试图在回调中访问命名空间中的函数,但这给我带来了一个错误,让我认为它们不能调用C++代码,我想这很有道理。但后来我意识到我与C++类的交互没有问题。
那么,在C代码中执行的回调是否允许调用C++特定的函数,如命名空间和类?
您需要将标头#include
作为C文件:
extern "C" {
#include "c_file.h"
}
那么,在C代码中执行的回调是否允许调用C++特定的函数,如命名空间和类?
是的。通常的解决方案是创建一个不透明(void*)对象,该对象包含类的指针,以及在C++代码中声明为extern "C"
的一组回调,这些回调接收指向类指针的void *
、reinterpret_cast
,并调用适当的函数。
如果不需要为回调记住类,则可以省去void*
和reinterpret_cast
的内容,但C++中的回调仍需要声明为extern "C"
,C代码才能调用它们。
相关文章:
- 从C++代码抛出错误调用 JavaScript 回调函数 - nbind
- 如果用户尝试从 JS 调用对象的未定义函数C++则回调C++代码
- 如何使用传递给 C# 代码回调的 C/C++本机结构
- 当满足条件时,是否可以在 GLSL 着色器中回调 C/C++ 函数/代码
- 当通过代码触发回调时,抑制GTK信号
- 在WNDClasSex中断代码中将代码添加到WNDPROC回调中
- 如何优雅地处理C++代码中的C回调
- 允许托管环境中的托管代码回调非托管代码
- 如何从 JNI 代码进行 JNIT 测试回调
- DllMain 中钩子回调函数的入口代码是什么
- 将对象从C++代码传递到回调函数中
- 使用C++代码从C代码回调
- 这段代码中的回调发生在哪里?
- 如何使用JNI从本机C/ c++代码调用Java applet回调函数
- 嵌入python + numpy代码到c++ dll回调
- 如何避免将类成员传递给回调的类似常量和非常量成员函数之间的代码重复
- 非静态回调如何在本机代码中工作
- 在c代码中注册一个c++回调方法
- Windows:当我从本机代码回调到托管代码时,将显示“仅消息”窗口
- 当从c++代码发送回调到c#代码时,访问冲突读取位置0x00000004