可能的重复:
使用 C++ 类成员函数作为 C 回调函数
我正在使用 C 库(winpcap)编写一个面向对象的库。我需要传递网络数据包到达时调用的回调函数作为函数指针。我想将成员函数指针传递给 winpcap,以保持我的设计面向对象并允许不同的对象接收不同的数据包。然而,据我所知,成员函数有不同的调用约定,因此不能传递给 C 函数。有没有办法来解决这个问题。我对 boost::bind 的实验(除了反复试验之外我几乎无法使用它)没有取得成果。
有没有办法改变成员函数的调用约定?
这是我现在使用的回调函数的定义以及将其实际传递给 winpcap
void pcapCallback( byte* param, const struct pcap_pkthdr* header, const byte* pkt_data );
pcap_loop( adhandle, 0, pcapCallback, NULL );
pcap_loop 仅采用函数的名称(目前位于全局范围内)。这是函数指针参数的定义(第三个参数pcap_循环)。由于这是第三方代码,我无法真正更改它。我必须有一个可以采用这种形式的成员函数:
typedef void (*pcap_handler)(u_char *, const struct pcap_pkthdr *, const u_char *);
据我了解,成员函数将使用 thiscall 并且 c 函数指针需要 cdecl
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)