|
1Qter豆
最近为了练手,做了一个WAV的音频播放器,中间层用C语言实现并打包成 .a静态库(linux系统),ui层用qt实现。
现在遇到一个问题如下描述:
qt 的窗体类中我定义了一个QSlider 的对象用于显示当前歌曲播放进度,但是不知道怎么把当前文件读写指针保存的当前播放位置传递给 窗体。
在网上找到一中实现方法:先用c++函数调用c的函数将c++的一个函数名传递给c语言线程,c语言以函数指针的方式保存此函数名,在播放时通过函数指针调用c++的函数,并将当前播放进度通过参数传递给c++完成显示。
但是可惜只找到了c语言的部分代码,不知道在c++中该怎么写,下边是部分c代码- static void (*setState)(PLAYSTATE state,int val); //函数指针变量 存UI层函数指针
- //设置状态信息句柄 通过该设置,将调用方需要处理状态的函数地址传入本地,如设为NULL则不需处理
- int minit(void (*handler)(PLAYSTATE state,int val) ){
- setState=handler;
- return 0;
- }
复制代码 特请教各位前辈大神。望指教。
|
最佳答案
查看完整内容
你要调用c++成员函数,必须要传递 this指针,你不用内嵌汇编的话,需要把c++成员函数 例如 void C1::f1()的声明改为 cdecl:void __cdecl f1(),然后你c语言调用的时候,还需要传递this指针(例如 C1*pObj=0; f1(pObj))
|