【发布时间】:2015-10-21 11:52:20
【问题描述】:
从昨天开始,我正在学习如何使用 pcap 来解析 pcap 文件。
从昨天开始,我遇到了一个错误:
这是我的简单代码,尝试在 pcap_t 结构中编写 fd:
#include <pcap/pcap.h>
#include <sys/types.h>
#include <pcap-bpf.h>
#include <stdio.h>
int main() {
char errbuf[PCAP_ERRBUF_SIZE];
pcap_t *result;
if ((result = pcap_open_offline("test.pcap", errbuf)) == NULL) {
printf("%s\n", errbuf);
return -1;
}
printf("fd=%d\n", result->fd);
return 0;
}
这是我的错误:
gcc -Wextra -Wall -Werror -I./includes -c -o main.o main.c
main.c: In function ‘main’:
main.c:14:27: error: dereferencing pointer to incomplete type
printf("fd=%d\n", result->fd);
^
make: *** [main.o] Error 1
我看到了这个帖子:Pcap Incomplete Type
这家伙遇到的问题几乎和我一样,但我仍然找不到解决方案,我包括了 pcap_open_offline 需要的内容,我还包括了 pcap-bpf.h,因为我看到 pcap_t 正在使用 bpf_program。
第一个答案是说“错误是因为编译器看不到结构的定义”,但在我的情况下,结构是 pcap_t 并且是我包含的 pcap.h 中的 typedef。
我只是不明白如何在 pcap 中包含正确性。
另外,我在 Ubuntu 上,我找不到所有关于 pcap 的 .h 文件。当我在谷歌上查看时,我只能从苹果和 Windows 中找到 .h,所以我假设我使用的是与苹果相同的,但我不确定!
我正在阅读此文档以查看结构字段: http://www.opensource.apple.com/source/libpcap/libpcap-18/libpcap/pcap.h http://www.opensource.apple.com/source/libpcap/libpcap-9/libpcap/pcap-int.h
但是,apple.com 再次让我感到害怕,我不确定我是否应该依赖它。例如,我的系统中似乎不存在 pcap-int.h。
谢谢!
【问题讨论】: