C API函数回调到C成员函数代码

所以,我正在使用FMOD api,它真的是一个C api.

不是那么糟糕或任何事情.它只是它与C代码不是很好地接口.

例如,使用

FMOD_Channel_SetCallback( channel,callbackFunc ) ;

它想要一个C风格的函数用于callbackFunc,但是我想传递一个类的一个成员函数.

我最终使用Win32技巧,使成员函数静态.然后它作为一个回调到FMOD.

现在我必须分开我的代码,让一些成员静态,只是为了解释FMOD的C-ness.

我想知道它是否可能在FMOD中,或者如果有一个工作可以将回调链接到特定的C对象的实例成员函数(而不是静态函数).这会更顺利

解决方法

你不能直接传递一个成员函数.一个成员函数具有这个隐含参数,而C函数没有.

你需要创建一个蹦床(不确定回调的签名,所以只是在这里做一些随意的事情).

extern "C" int fmod_callback( ... args ...)
{
    return object->member();
}

一个问题是该对象指针来自哪里.希望fmod为您提供一个通用的上下文值,该值将在您的回调时提供给您(然后可以传入对象指针).

如果没有,您只需要使其成为全局访问.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...