VC转换BCB时遇到函数原型错误?
VC中的函数原型:
long WINAPI AioSetAiCallBackProc(short Id,
long (_stdcall *pProc)(short Id, short AiEvent, WPARAM wParam, LPARAM lParam, void *Param), long AiEvent, void *Param);
第二个参数是一个回调函数的地址。
我在BCB中声明的函数原型:
long __stdcall CallBackProc(short Id, short Message, WPARAM wParam, LPARAM lParam, void *Param);
我在程序调用下面代码时出错:
AioSetAiCallBackProc(Id, CallBackProc, AIE_END, this);
提示:
[C++ Error] AiCallUnit.cpp(194): E2034 Cannot convert 'long (__stdcall * (_closure )(short,short,unsigned int,long,void *))(short,short,unsigned int,long,void *) ' to 'long (__stdcall *)(short,short,unsigned int,long,void *) '
[C++ Error] AiCallUnit.cpp(194): E2342 Type mismatch in parameter 'pProc ' (wanted 'long (__stdcall *)(short,short,unsigned int,long,void *) ', got 'void ')
应该怎样才能正确调用呢?
[解决办法]
我在BCB中声明的函数原型:
long __stdcall CallBackProc(short Id, short Message, WPARAM wParam, LPARAM lParam, void *Param);
long WINAPI AioSetAiCallBackProc(short Id,
long (_stdcall *pProc)(short Id, short AiEvent, WPARAM wParam, LPARAM lParam, void *Param), long AiEvent, void *Param);
不对啊
short Message
long (_stdcall *pProc)(short Id, short AiEvent,
怎么对啊?
[解决办法]
你把CallBackProc搞成了成员函数了吧,应该是静态或者全局函数
[解决办法]
对, 大概是放在类里面了.
[解决办法]
vc中如何声明的,bcb中保持一样就可以了。