【问题标题】:Can't link against WinPcap library wpcap.lib ("undefined reference to")无法链接到 WinPcap 库 wpcap.lib(“未定义的引用”)
【发布时间】:2013-11-26 10:42:30
【问题描述】:

我正在尝试构建一个使用 WinPcap 函数的示例程序。我正在使用 MinGW 在 Windows 7 64 位版本下工作。我能够将 C 代码编译为目标文件,但无法链接到 wpcap.lib。 我的链接器调用如下所示:

gcc -L ../../lib/x64 send_packet.o -lwpcap -o WinPcapTest.exe

通过此调用,我收到以下错误:

undefined reference to pcap_open

undefined reference to pcap_sendpacket

undefined reference to pcap_geterr

显然我没有链接到 wpcap.lib,但我不知道为什么。图书馆肯定找到了。例如,如果我更改 lib 包含路径,我会收到此错误:

cannot find -lwpcap

为什么链接器找到了库但没有链接到它?谢谢你的帮助。

【问题讨论】:

  • gcc -L ../../lib/x64 send_packet.o -lwpcap -o WinPcapTest.exe 是否反映了您为构建可执行文件而发出的real 命令,从而给您问题中提到的错误,尤其是在参数的顺序方面?
  • 是的。我只是缩短了库包含路径以提高可读性。真正的命令是这样的:gcc -L ..\..\..\Downloads\WpdPack_4_1_2\WpdPack\Lib\x64 send_packet.o -lwpcap -o WinPcapTest.exe
  • 我也尝试了组合编译器和链接器调用:gcc -I ..\..\..\Downloads\WpdPack_4_1_2\WpdPack\Include ..\send_packet.c -L ..\..\..\Downloads\WpdPack_4_1_2\WpdPack\Lib\x64 -lwpcap -O0 -g3 -Wall -o WinPcapTest.exe 并得到了相同的结果。

标签: c gcc linker mingw winpcap


【解决方案1】:

尝试在二进制定义后列出您的库。据我记得,使用提供的gcc 命令,ld 将是 send_packet.o 和 libwpcap.lib 之间的 pcap 符号的符号匹配,但不是 WinPcapTest.exe。我建议在最后移动 -lwpcap:

gcc -I ..\..\..\Downloads\WpdPack_4_1_2\WpdPack\Include ..\send_packet.c -L ..\..\..\Downloads\WpdPack_4_1_2\WpdPack\Lib\x64 -O0 -g3 -Wall -o WinPcapTest.exe -lwpcap

【讨论】:

    猜你喜欢
    • 2014-05-06
    • 2017-08-03
    • 1970-01-01
    • 2019-05-07
    • 2021-12-23
    • 2014-12-25
    • 2011-12-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多