如何将 PcapPlusPlus 库添加到 Qt Widgets 项目

问题描述 投票:0回答:1

我正在开发 Qt 项目,并将使用 PcapPlusPlus 库来读取 PcapNG 文件。

我使用的是 Windows 和 MSVC 2019 64 位,并为我的项目下载了这个库:

pcapplusplus-23.09-windows-vs2022-x64-release

Pcap++ 库不能单独工作。所以,它需要依赖库。我下载了 Npcap 和 WinPcap SDK。我将

.lib
库和
include directory
包含到
.pro
文件中。

我编辑了

.pro
文件以添加 PcapPlusPlus、Npcap、WinPcap 库:

INCLUDEPATH += \
    $$PWD/external/pcapplusplus/include/pcapplusplus \
    $$PWD/external/pcapplusplus/include \
    $$PWD/external/WpdPack/Include \
    $$PWD/external/WpdPack/Include/pcap \
    $$PWD/external/npcap/Include \
    $$PWD/external/npcap/Include/pcap \

LIBS += \
    -L$$PWD/external/pcapplusplus/lib -lPcap++ -lCommon++ -lPacket++ \
    -L$$PWD/external/WpdPack/Lib/x64 -lPacket -lwpcap \
    -L$$PWD/external/npcap/Lib/x64 -lPacket -lwpcap \

DEPENDPATH += \
    $$PWD/external/pcapplusplus/include/pcapplusplus \
    $$PWD/external/pcapplusplus/include \
    $$PWD/external/WpdPack/Include \
    $$PWD/external/WpdPack/Include/pcap \
    $$PWD/external/npcap/Include \
    $$PWD/external/npcap/Include/pcap \

并使用以下方法包含库:

#include "IPv4Layer.h"
#include "Packet.h"
#include "PcapFileDevice.h"

pcapng.h
pcapng.cpp
文件用于使用库从 PcapNG 文件读取数据字节。

当我声明一个这样的对象时:

pcpp::PcapFileReaderDevice reader(R"(C:\Users\abc.xyz\Desktop\1_packet.pcap)");

没有错误,但是当我构建项目时,出现了2个错误:

Common++.lib(IpAddress.obj):-1: 
error: LNK2019: unresolved external symbol __imp_inet_pton referenced in function 
"public: __cdecl pcpp::IPAddress::IPAddress(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" 
(??0IPAddress@pcpp@@QEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)

Common++.lib(IpAddress.obj):-1: 
error: LNK2019: unresolved external symbol inet_ntop referenced in function 
"public: bool __cdecl pcpp::IPv4Address::matchSubnet(class pcpp::IPv4Address const &,class pcpp::IPv4Address const &)const " 
(?matchSubnet@IPv4Address@pcpp@@QEBA_NAEBV12@0@Z)

我下载了一个预编译库并将依赖库包含到Qt项目中。但我仍然收到错误。

include qt-creator lib pcapplusplus
1个回答
0
投票

LIBS 应该是

LIBS += -L$$PWD\pcapplusplus\lib -lpcapplusplus

或者类似的东西。也就是说,添加带有

-L
的库搜索路径,带有
-l
的库(库“基本名称”,没有前缀或后缀)。

© www.soinside.com 2019 - 2024. All rights reserved.