c++ - 使用 libpcap 和 c++ 构建错误 pcap_loop

标签 c++ libpcap

嗨,我正在使用 c++ 和 libpcap。当我尝试调用函数“mycallback”时,出现构建错误。 这些是函数:

void Capture::mycallback (unsigned char * useless, const struct pcap_pkthdr *pkthdr, const unsigned char * packet){
[...]
}

以及对函数的调用:

void Capture::capturar(){
  [...]
  pcap_loop (descr, -1, mycallback, NULL);  //entramos en el bucle (infinito)
}

这是错误:

error: argument of type 'void (Capture ::) (unsigned char *, const pcap_pkthdr *, const unsigned char *)' does not match '{aka pcap_handler void (*) (unsigned char *, const pcap_pkthdr *, const unsigned char *)} '

我不明白这些错误,因为声明是相同的,有人可以帮助我吗?

谢谢。

最佳答案

您的回调是一个类成员函数。在大多数平台上,您可以使用静态类成员函数,但理想情况下您应该只使用常规函数。如果需要对该类进行特殊访问,您可以将该函数设为该类的友元

错误确实表明了这一点:

... 'void (Capture::) (unsigned char *, const pcap_pkthdr ... 与 '{aka pcap_handler void (*) (unsigned ...

) 不匹配

注意 Capture:: 出现在“不匹配”的左侧而不是右侧?每当出现这样的错误时,请比较两侧并看看有什么不同。

关于c++ - 使用 libpcap 和 c++ 构建错误 pcap_loop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9969280/

相关文章:

c++ - Boost asio async_accept 在 Windows 下工作,但在 FreeBSD 下失败。怎么了?

c - pcap_open_dead 模拟完整的 UDP 数据包捕获

c++ - 我们在哪里可以找到C++编程文章

c++ - 在 C++ 项目中包含 .idl 文件

C++通过访问函数返回私有(private)二维数组

c - 带过滤器的 pcap_loop 不捕获任何数据包

linux - libpcap 如何从驱动程序接收数据包?

c++ - 有没有更好的删除动态数组元素的方法?

Python 数据包嗅探/数据包捕获 - pcapy 不捕获数据包

c++ - Libpcap : some CNAMEs seems missing TLD解析CNAME问题