在windows 7上安装pcapy时出错-无法打开include文件:“pcap.h”

2024-06-03 00:28:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试在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中添加额外的include文件目录,但是在我的机器上找不到pcap.h。我从哪儿弄来的?


Tags: thefalseincludeonpcapexesystemrunning
3条回答

根据乔希·p的回答(我刚才大部分时间都是这么做的):

  1. 下载WinPcap开发包
  2. 解压缩zip文件(例如c:\users\foo\Downloads\WpdPack_4_1_2
  3. 使用--global-option传递头和链接器位置来生成

为链接器指定库文件夹时,在Windows 7上,我需要指定x64版本的库,而不是(默认)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)
C:\pcapy-0.10.8>c:\Python27\python.exe setup.py install

the CoreLabs site for pcapy上的文本可以看出,您下载的是源代码,而不是Win32二进制文件。除非您真的需要从源代码构建,否则您可能会发现安装二进制文件要容易得多。

Do the falses there mean that WinPcap did not get installed properly?

没有

I was hoping to find pcap.h

然后,如果需要从源代码构建,则需要安装WinPcapDeveloper's Pack。WinPcap只是“运行时”,对于已经构建的Wireshark之类的程序来说是足够的,但对于使用WinPcap的软件来说是不够的,而且需要在您的机器上编译它,显然,您下载的任何类型的pcapy都需要构建。

(这类似于libpcap在许多Linux发行版上的打包方式-“libpcap”包只安装运行时,您需要安装“libpcap dev”包或类似的包来获取头文件。)

但是,如果Windows二进制文件对您有用,就不要为WinPcap开发包而烦恼。

正如Guy Harris所解释的,下载安装二进制文件通常更容易。如果确实从源代码生成:

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

    下面是一个示例行(为您的系统替换正确的路径;我刚刚在下载文件夹中引用了它们):

    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
    

另请参见this answer

相关问题 更多 >