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为您提供一个通用的上下文值,该值将在您的回调时提供给您(然后可以传入对象指针). 如果没有,您只需要使其成为全局访问. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |