You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 00:13:17