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

前端之家收集整理的这篇文章主要介绍了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为您提供一个通用的上下文值,该值将在您的回调时提供给您(然后可以传入对象指针).

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

原文链接:https://www.f2er.com/c/114455.html

猜你在找的C&C++相关文章