使用PcapPlusPlus获取本地设备列表为空的问题求助
问题排查:PcapPlusPlus在Windows下获取空网络设备列表
可能原因及解决方案
1. 缺少必要的系统库链接
Windows下获取网络接口信息依赖iphlpapi.lib,你的CMakeLists.txt中未添加该库,而官方示例默认包含了它。修改CMakeLists.txt的链接配置:
target_link_libraries(${PROJECT_NAME} PRIVATE unofficial::pcapplusplus::pcappp unofficial::pcapplusplus::packetpp unofficial::pcapplusplus::commonpp ws2_32 iphlpapi )
2. 手动触发设备列表刷新
虽然getPcapLiveDevicesList()默认会初始化设备列表,但某些场景下需要显式刷新。修改代码添加刷新操作:
#include <iostream> #include <PcapLiveDeviceList.h> int main() { auto& deviceList = pcpp::PcapLiveDeviceList::getInstance(); // 显式刷新设备列表 deviceList.refresh(); const std::vector<pcpp::PcapLiveDevice*>& devList = deviceList.getPcapLiveDevicesList(); if (devList.empty()) { std::cout << "Empty device list" << std::endl; return 1; } std::cout << "Network interfaces:" << std::endl; for (const auto* dev : devList) { std::cout << " -> Name: '" << dev->getName() << "' IP address: " << dev->getIPv4Address().toString() << std::endl; } return 0; }
3. 检查底层抓包驱动状态
PcapPlusPlus依赖Npcap/WinPcap驱动:
- 若使用vcpkg安装的包,需手动安装Npcap并勾选WinPcap兼容模式(安装时的选项);
- 打开系统服务管理器,确认
Npcap Packet Driver服务处于运行状态。
4. 重新安装vcpkg依赖包
若包文件存在损坏,尝试重装:
vcpkg remove unofficial-pcapplusplus vcpkg install unofficial-pcapplusplus:x64-windows
(根据你的编译平台选择x86-windows或x64-windows)
内容的提问来源于stack exchange,提问作者vekoze
相关产品推荐
相关产品推荐

