使用MS Visual Studio 2012编译Libpcap失败 我一直在尝试用C++中的MS Visual Studio 2012创建一个程序来分析在pCAP文件中捕获的以太网帧。我已经下载了最新的WinPcap(4.1.3)和Libpcap(1.7.2)

使用MS Visual Studio 2012编译Libpcap失败 我一直在尝试用C++中的MS Visual Studio 2012创建一个程序来分析在pCAP文件中捕获的以太网帧。我已经下载了最新的WinPcap(4.1.3)和Libpcap(1.7.2),c++,visual-studio-2012,libpcap,C++,Visual Studio 2012,Libpcap,我已经成功地将提取的libpcap文件夹中的所有子文件夹都包含到我的项目中(如果我只添加了根文件夹,则包含不起作用)。然而,我有一个错误,即类型“Adapter”没有定义。所以我搜索了Libpcap中的所有文件,但没有找到定义。我还试图搜索它是否可能是在某种标准库中定义的,同样没有运气 我错过什么了吗?我是否需要以某种特殊方式包含libpcap?(目前我只包括#包括) 我也试着玩了一下,并在pcap.h中评论了错误的一行: Adapter *pcap_get_adapter(pcap_t *p)

我已经成功地将提取的libpcap文件夹中的所有子文件夹都包含到我的项目中(如果我只添加了根文件夹,则包含不起作用)。然而,我有一个错误,即类型“Adapter”没有定义。所以我搜索了Libpcap中的所有文件,但没有找到定义。我还试图搜索它是否可能是在某种标准库中定义的,同样没有运气

我错过什么了吗?我是否需要以某种特殊方式包含libpcap?(目前我只包括
#包括

我也试着玩了一下,并在pcap.h中评论了错误的一行:

Adapter *pcap_get_adapter(pcap_t *p);
我得到了一个不同的错误:

错误2错误LNK2019:未解析的外部符号 _pcap_打开_脱机_,具有_tstamp_精度

因此,经过一些研究之后,我发现我可能缺少一些预处理器定义(
WIN32;WPCAP;HAVE_REMOTE
)。这引发了另一个问题,即无法找到头文件
Win32 Extensions.h
。然后我就放弃了


谢谢你的建议。

要使用一个类,你需要两件事:

  • 声明。这一个在.h文件中,您拥有它
  • 定义。这个在类定义的库(动态或静态)中。看来,你错过了这个。你正确地链接到图书馆了吗?请检查是否存在坏链接(或无链接)是原因的可能性 我已经下载了最新的WinPcap(4.1.3)<代码>未解析的外部符号\u pcap\u open\u offline\u具有\u tstamp\u精度
  • 最新的WinPcap不是基于最新的libpcap,甚至不是基于相对较新版本的libpcap,因此它没有带有
    pcap\u open\u offline\u的,它只有pcap\u open\u offline()

    最新版本的WinPcap也无法读取pcap ng文件或“具有纳秒分辨率的pcap”文件,因此在任何情况下都无法提供纳秒精度的时间戳

    如果您希望能够读取具有纳秒精度时间戳的文件并从中获取纳秒分辨率时间戳值,则必须在UN*X上运行并使用更新版本的libpcap;这就是你在Linux上所做的

    如果您希望能够在Windows上使用WinPcap运行程序,或者在UN*Xes版本上使用旧版本的libpcap运行程序,则必须使用
    pcap\u open\u offline()
    打开捕获文件,并使用微秒分辨率时间戳

    我已经下载了最新的WinPcap(4.1.3)和Libpcap(1.7.2)

    你不能只是把它们放在一起,希望它能起作用。如果您想下载WinPcap和libpcap源代码,并尝试将它们合并到WinPcap的更新版本中,这将是一个相当复杂的项目,您可能需要研究它们的源代码

    您可能只想安装WinPcap,并且(是的,上面说的是4.1.2,但是4.1.2开发包可以与4.1.3配合使用,正如注释所说)并使用它,然后将libpcap留给UN*X框

  • 您应该下载并安装
  • 你应该下载
  • 请参阅WinPcap 4.1.2 SDK存档中的“示例pcap\readfile\readfile.c”示例。这将有助于开始

  • 如果您有pcap ng文件或纳秒精度的文件,请使用

    更新WinPcap库,因为它肯定不会解决缺少“适配器”类型定义的主要问题。最后,我设法让它在Linux下工作。感谢您的澄清。