VS2017使用Pcap++库构建时出现LNK2019错误该如何解决?
LNK2019报错根因
该报错是因为你只链接了Pcap自身的三个库,没有引入Pcap依赖的底层抓包库依赖项。_pcap_setfilter是WinPcap/Npcap库的导出函数,不属于Pcap++本身的库内容。
解决步骤
- 首先确认本地已经安装WinPcap或Npcap(更推荐Npcap,兼容性更强),找到安装目录下的Lib文件夹,选择和你项目架构匹配的
wpcap.lib文件:x86项目用32位版本lib,x64项目用64位版本lib。 - 打开VS项目属性页,切换到你当前构建的配置(Release + 对应架构),在【配置属性->链接器->常规->附加库目录】中,添加WinPcap/Npcap的Lib文件夹路径,和你之前添加Pcap++库路径的操作一致。
- 在【配置属性->链接器->输入->附加依赖项】中,追加两个依赖项:
wpcap.lib、ws2_32.lib。其中ws2_32.lib是Windows原生套接字库,Pcap++的网络逻辑依赖该库 - 如果你使用的是纯Npcap模式而非WinPcap兼容模式,需要在【配置属性->C/C++->预处理器->预处理器定义】中添加
HAVE_REMOTE宏。
异常排查
完成以上操作后如果仍然报错,可核对以下配置:
- 所有依赖库的版本、架构、运行时选项完全匹配:项目是Release x64的情况下,Pcap++库、wpcap.lib都必须是Release x64版本,运行时选项统一为
/MD,不能出现Debug/Release混用、x86/x64混用、运行时选项不一致的情况。 - 确认你使用的Pcap++确实是VS2017编译的版本,不同VS版本编译的库二进制不兼容,也会触发链接错误。
内容的提问来源于stack exchange,提问作者Ahmed Yousif
相关产品推荐
相关产品推荐

