加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 05:32:26 所属栏目:百科 来源:网络整理
导读:所以,我正在使用FMOD api,它真的是一个C api. 不是那么糟糕或任何事情.它只是它与C代码不是很好地接口. 例如,使用 FMOD_Channel_SetCallback( channel,callbackFunc ) ; 它想要一个C风格的函数用于callbackFunc,但是我想传递一个类的一个成员函数. 我最终使
所以,我正在使用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为您提供一个通用的上下文值,该值将在您的回调时提供给您(然后可以传入对象指针).

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读