错误:在 Windows 上使用 Rust 中的 pcap 箱

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

我在 Rust 中遇到链接问题。 我是 Rust 新手,正在使用 pcap 板条箱构建一个库项目。 在 Linux 和 Mac OS 上一切正常,但当我在 Windows 上尝试时,我遇到链接错误。

我在cargo.toml中添加了pcap板条箱作为依赖项。 然后,我按照 crates.io pcap 页面 (https://crates.io/crates/pcap) 中所述安装了 Winpcap(还安装了开发人员包)。然后在页面上显示:

Add the /Lib or /Lib/x64 folder to your LIB environment variable.

我收到此错误(我删除了错误中间的部分路径以专注于主要内容,但如果它们有用,请告诉我):

error: linking with `link.exe` failed: exit code: 1181
|
= note: "C:\\Program Files\\Microsoft 
VisualStudio\\2022\\Community\\VC\\Tools\\MSVC\\14.........
....................
= note: LINK : fatal error LNK1181: cannot open input file 
'wpcap.lib'

我通过将 wpcap.lib 基本链接错误添加到名为 LIB 的新环境变量(如文档所述)来解决它。

然后,尝试进行货物构建时,我收到一条错误消息

PS C:\dev\testing> cargo build
Compiling testing v0.1.0 (C:\dev\testing)
error: linking with `link.exe` failed: exit code: 1120
|
= note: "C:\\Program Files\\Microsoft Visual 
Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.32.31326\\bin\\HostX64\\x64\\link.exe" 
"/NOLOGO" "C:\\dev\\testing\\target\\debug\\deps\\testing.testing.edb54395-cgu.0.rcgu.o" 
"C:\\dev\\testing\\target\\debug\\deps\\testing.testing.edb54395-cgu.1.rcgu.o" 
"C:\\dev\\testing\\target\\debug\\deps\\testing.testing.edb54395-cgu.10.rcgu.o" 
"C:\\dev\\testing\\target\\debug\\deps\\testing.testing.edb54395-cgu.2.rcgu.o" 
"C:\\dev\\testing\\target\\debug\\deps\\testing.testing.edb54395-cgu.3.rcgu.o" 
"C:\\dev\\testing\\target\\debug\\deps\\testing.testing.edb54395-cgu.4.rcgu.o" 
"C:\\dev\\testing\\target\\debug\\deps\\testing.testing.edb54395-cgu.5.rcgu.o" 
"C:\\dev\\testing\\target\\debug\\deps\\testing.testing.edb54395-cgu.6.rcgu.o" 
"C:\\dev\\testing\\target\\debug\\deps\\testing.testing.edb54395-cgu.7.rcgu.o" 
"C:\\dev\\testing\\target\\debug\\deps\\testing.testing.edb54395-cgu.8.rcgu.o" 
"C:\\dev\\testing\\target\\debug\\deps\\testing.testing.edb54395-cgu.9.rcgu.o" 
"C:\\dev\\testing\\target\\debug\\deps\\testing.1aob1werv7d25t5k.rcgu.o" 
"/LIBPATH:C:\\dev\\testing\\target\\debug\\deps" 
"/LIBPATH:C:\\Users\\Noahr\\.rustup\\toolchains\\stable-x86_64-pc-windows- 
msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" 
"C:\\dev\\testing\\target\\debug\\deps\\libpcap-8deb041f35d1931b.rlib" 
"C:\\dev\\testing\\target\\debug\\deps\\liberrno-7dba5013f5f8cda0.rlib" 
"C:\\dev\\testing\\target\\debug\\deps\\liblibc-b1b00607d98a9924.rlib" 
"C:\\dev\\testing\\target\\debug\\deps\\libwinapi-67f367a3be4e6577.rlib" 
"C:\\dev\\testing\\target\\debug\\deps\\libwidestring-e027d887e1db6ed5.rlib" 
"C:\\Users\\Noahr\\.rustup\\toolchains\\stable-x86_64-pc-windows- 
msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libstd-ca7b0c28ec762872.rlib" 
"C:\\Users\\Noahr\\.rustup\\toolchains\\stable-x86_64-pc-windows- 
msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libpanic_unwind-1b050a71ed5c4477.rlib" 
"C:\\Users\\Noahr\\.rustup\\toolchains\\stable-x86_64-pc-windows- 
msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libstd_detect-ba9f9c006950f110.rlib" 
"C:\\Users\\Noahr\\.rustup\\toolchains\\stable-x86_64-pc-windows- 
msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\librustc_demangle- 
4e228cbffbe5e3cd.rlib" "C:\\Users\\Noahr\\.rustup\\toolchains\\stable-x86_64-pc-windows- 
msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libhashbrown-d3d7c65121bb0d35.rlib" 
"C:\\Users\\Noahr\\.rustup\\toolchains\\stable-x86_64-pc-windows- 
msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\librustc_std_workspace_alloc- 
2cedaf2947cb8622.rlib" "C:\\Users\\Noahr\\.rustup\\toolchains\\stable-x86_64-pc-windows- 
msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libunwind-7d6cff0c7b8f0c2b.rlib" 
"C:\\Users\\Noahr\\.rustup\\toolchains\\stable-x86_64-pc-windows- 
msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcfg_if-63bdfcda4a65748c.rlib" 
"C:\\Users\\Noahr\\.rustup\\toolchains\\stable-x86_64-pc-windows- 
msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\liblibc-c331c9d260094b22.rlib" 
"C:\\Users\\Noahr\\.rustup\\toolchains\\stable-x86_64-pc-windows- 
msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\liballoc-34d0a2dd4a5dbc91.rlib" 
"C:\\Users\\Noahr\\.rustup\\toolchains\\stable-x86_64-pc-windows- 
msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\librustc_std_workspace_core- 
e7b8421abede5598.rlib" "C:\\Users\\Noahr\\.rustup\\toolchains\\stable-x86_64-pc-windows- 
msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcore-08b052fa5e861ac2.rlib" 
"C:\\Users\\Noahr\\.rustup\\toolchains\\stable-x86_64-pc-windows- 
msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib\\libcompiler_builtins- 
18761c3bc8f2e6ea.rlib" "wpcap.lib" "advapi32.lib" "cfgmgr32.lib" "kernel32.lib" 
"user32.lib" "kernel32.lib" "ws2_32.lib" "bcrypt.lib" "advapi32.lib" "userenv.lib" 
"kernel32.lib" "msvcrt.lib" "/NXCOMPAT" 
"/LIBPATH:C:\\Users\\Noahr\\.rustup\\toolchains\\stable-x86_64-pc-windows- 
msvc\\lib\\rustlib\\x86_64-pc-windows-msvc\\lib" 
"/OUT:C:\\dev\\testing\\target\\debug\\deps\\testing.exe" "/OPT:REF,NOICF" "/DEBUG" 
"/NATVIS:C:\\Users\\Noahr\\.rustup\\toolchains\\stable-x86_64-pc-windows- 
msvc\\lib\\rustlib\\etc\\intrinsic.natvis" 
"/NATVIS:C:\\Users\\Noahr\\.rustup\\toolchains\\stable-x86_64-pc-windows- 
msvc\\lib\\rustlib\\etc\\liballoc.natvis" 
"/NATVIS:C:\\Users\\Noahr\\.rustup\\toolchains\\stable-x86_64-pc-windows- 
msvc\\lib\\rustlib\\etc\\libcore.natvis" 
"/NATVIS:C:\\Users\\Noahr\\.rustup\\toolchains\\stable-x86_64-pc-windows- 
msvc\\lib\\rustlib\\etc\\libstd.natvis"
= note: libpcap-8deb041f35d1931b.rlib(pcap-8deb041f35d1931b.pcap.c5d00465-cgu.0.rcgu.o) 
: error LNK2019: unresolved external symbol pcap_set_tstamp_type referenced in function 
_ZN4pcap29Capture$LT$pcap..Inactive$GT$11tstamp_type17h390a1208ab521116E
libpcap-8deb041f35d1931b.rlib(pcap-8deb041f35d1931b.pcap.c5d00465-cgu.0.rcgu.o) : 
error LNK2019: unresolved external symbol pcap_set_immediate_mode referenced in function 
_ZN4pcap29Capture$LT$pcap..Inactive$GT$14immediate_mode17h93e0c1bfbe5dff6eE       
libpcap-8deb041f35d1931b.rlib(pcap-8deb041f35d1931b.pcap.c5d00465-cgu.0.rcgu.o) : 
error LNK2019: unresolved external symbol pcap_set_tstamp_precision referenced in 
function _ZN4pcap29Capture$LT$pcap..Inactive$GT$9precision17h00be47b98a77c43eE
C:\dev\testing\target\debug\deps\testing.exe : fatal error LNK1120: 3 unresolved 
externals

好像找到了wpcap.lib,但是没有找到那3个libpcap函数。 我被困住了。感谢您的关注和回复:)

rust rust-cargo pcap libpcap winpcap
2个回答
0
投票

更新。我解决了卸载 winpcap 和 rustup 的问题。 重新安装了 rustup、winpcap 和 winpcap 开发者包 sdk。 将 winpcap sdk 的 x64 文件夹路径添加到新的 LIB 环境变量中。 现在一切正常了。我不知道我之前遇到这个错误的原因,但知道它有效。


0
投票

对于

LINK : fatal error LNK1181: cannot open input file  'wpcap.lib' 
你需要

安装Npcap

下载Npcap SDK

将 SDK 的 /Lib 或 /Lib/x64 “wpcap.lib” 文件添加到您的 rustup 工具链文件夹中作为示例 C:\用户 ick.rustup oolchains\stable-x86_64-pc-windows-msvc\lib ustlib\x86_64-pc-windows-msvc\lib\

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