在Windows 7上安装pcapy时遇到问题 - 无法打开包含文件:' pcap.h'

时间:2014-04-10 18:27:05

标签: python pcap winpcap

我正在尝试在Windows机器上安装pcapy。我已经安装了WinPcap 4.1.3

我将pcapy 0.10.8下载到C:\ pcapy-0.10.8

当我尝试安装时,会发生以下情况:

C:\pcapy-0.10.8>c:\Python27\python.exe setup.py install
running install
running build
running build_ext
building 'pcapy' extension
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\Bin\amd64\cl.exe /c /nolog o /Ox /MD /W3 /GS- /DNDEBUG -DWIN32=1 -Ic:\devel\oss\wpdpack\Include -Ic:\Python27\include -Ic:\Python27\PC /Tppcapdumper.cc /Fobuild\temp.win-amd64-2.7\Release \pcapdumper.obj
pcapdumper.cc
pcapdumper.cc(12) : fatal error C1083: Cannot open include file: 'pcap.h': No such file or directory
error: command 'cl.exe' failed with exit status 2

我不知道它在哪里寻找pcap.h.我可以确认pcapy-0.10.8目录中没有该名称的文件。

我错过了什么?我刚刚安装了WinPcap - 我需要重新启动吗?谢谢!

编辑添加...这是我的WinPcap安装日志的输出:

WinPcap 4.1.0.2980 Installation LOG
-----------------------------------------------------
Debug Information


Operating system detected on registry: 7 - AMD64
True operating system (kernel.dll):    7 - AMD64
npptools.dll present on the system:    false
netnm.inf present on the system:       false
nmnt.sys present on the system:        false

End of log
-----------------------------------------------------

false是否意味着WinPcap没有正确安装?我希望在我的WinPcap目录下找到pcap.h,但它不存在。我确实知道如果需要我可以在setup.py中添加其他包含文件目录,但我无法在我的机器上的任何地方找到pcap.h。我应该从哪里得到它?

4 个答案:

答案 0 :(得分:5)

C:\pcapy-0.10.8>c:\Python27\python.exe setup.py install

the CoreLabs site for pcapy上的文字,这表明您下载的是源而不是Win32二进制文件。除非您真的需要从源代码构建,否则您可能会发现 LOT 更容易安装二进制文件。

  

那些谬误是否意味着WinPcap没有正确安装?

没有

  

我希望找到pcap.h

然后, IF 需要 从源代码构建,您需要安装WinPcap {{3 }}。 WinPcap只是“运行时间”,足以支持已经构建的Wireshark等程序,但对于使用WinPcap并且需要在您的计算机上编译的软件来说还不够 - 显然,无论你下载什么样的pcapy都需要建立。

(这类似于libpcap在许多Linux发行版上打包的方式 - “libpcap”包只安装运行时,你需要安装一个“libpcap-dev”软件包,或类似的东西,以获得头文件。)

但如果Windows二进制文件适合您,请不要使用WinPcap开发人员包。

答案 1 :(得分:3)

以Josh P的答案为基础(我过去大部分时间都在那里):

  1. 下载WinPcap Developer' s
  2. 解压缩zip文件(例如c:\users\foo\Downloads\WpdPack_4_1_2
  3. 使用--global-option构建传递标头和链接器位置
  4. 为链接器指定库文件夹时,在Windows 7上,我需要指定lib的x64版本,而不是lib的(默认)x32版本:

    pip install pcapy  --global-option="build_ext" 
        --global-option="-Ic:\users\foo\Downloads\WpdPack_4_1_2\WpdPack\include" 
        --global-option="-Lc:\users\foo\Downloads\WpdPack_4_1_2\WpdPack\lib\x64"
    

    使用文件的...\lib(x32)版本时,我收到以下链接错误:

           Creating library build\temp.win-amd64-2.7\Release\pcapy.lib and object build\temp.win-amd64-2.7\Release\pcapy.exp
    
    pcapdumper.obj : error LNK2019: unresolved external symbol pcap_dump_close
    referenced in function "void __cdecl pcap_dealloc(struct pcapdumper *)" 
    (?pcap_dealloc@@YAXPEAUpcapdumper@@@Z)
    

答案 2 :(得分:2)

正如Guy Harris解释的那样,下载安装二进制文件通常更容易。如果您从源代码构建:

  1. 下载WinPcap Developer's Pack
  2. 使用pip' --global-option。 setup.py是不同的,但我认为pip比setup.py更受欢迎。

    这是一个示例行(替换为您系统的正确路径;我只是在Downloads文件夹中引用它们):

    pip install ./pcapy-src-dir --global-option=build_ext --global-option="-LC:\path\to\WpdPack_4_1_2\WpdPack\Lib" --global-option="-IC:\path\to\WpdPack_4_1_2\WpdPack\Include
    
  3. 另见this answer

答案 3 :(得分:0)

pcapy-0.11.1 中,setup.py比他们在维基页面上描述的内容更智能,更智能:https://github.com/CoreSecurity/pcapy/wiki/Compiling-Pcapy-on-Windows-Guide

调查表明,设置环境变量WPDPACK_BASE已经足够了,所以在Windows'它可能看起来像:

set WPDPACK_BASE=C:\Software\WpdPack

它甚至可以检测您是否需要这些库的32位或64位版本。

之前的答案并没有帮助我解决问题,但帮助我挖掘。所以他们可能有点过时了。