The windows-targets crate includes import libs, supports semantic versioning, and optional support for raw-dylib.
Note: As of Rust 1.71, the windows-link crate should be preferred.
Start by adding the following to your Cargo.toml file:
[dependencies.windows-targets] version = "0.53"
Use the link macro to define the external functions you wish to call:
windows_targets::link!("kernel32.dll" "system" fn SetLastError(code: u32)); windows_targets::link!("kernel32.dll" "system" fn GetLastError() -> u32); unsafe { SetLastError(1234); assert_eq!(GetLastError(), 1234); }