简体   繁体   中英

error: Working with pcap crate in rust on Windows

I have a linking problem in Rust. I'm new to rust and I'm building a library project using the pcap crate. On linux and Mac OS everything works fine, but as soon as I try on Windows I get linking errors.

I added pcap crate in the cargo.toml as a dependency. I then installed Winpcap as said in the crates.io pcap page ( https://crates.io/crates/pcap ) (installed the Developers pack as well). Then on the page says to:

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

I get this error (I deleted part of the paths in the middle of the error to focus on the main stuff, but if they are useful let me know):

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'

I solved the wpcap.lib basic linking error by adding it to a new environment variable called LIB as the documentation says.

Then, trying to cargo build, I got an error saying

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

It seems like it found wpcap.lib, but didn't found those 3 libpcap function. I am stuck. Thanks for the attention and for the replies:)

Update. I solved the issue uninstalling winpcap and rustup. Resinstalled rustup, winpcap and winpcap developers pack sdk. Added to a new LIB environment variable the path to the x64 folder of winpcap sdk. Now everything works. I don't know the reason why iI had that error before but know it works.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM