微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.jb51.cc/c/114455.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐