独立代码生成
即使在windows 和 windows-sys crate 之间进行选择,一些开发者可能仍然倾向于使用完全独立的绑定。 windows-bindgen crate 允许您通过一个函数调用为 Windows API 生成完全独立的绑定,您可以在测试中运行此函数调用以自动化绑定生成。这有助于减少您的依赖,同时为未来可能需要的任何 API 需求提供可持续的发展路径,或者只是不时刷新您的绑定以自动获取 Microsoft 的任何错误修复。
警告:独立代码生成只应作为最苛刻场景的最后手段。使用 windows-sys crate 并让 Cargo 管理此依赖要简单得多。此
windows-sys
crate 提供原始绑定,经过严格测试并广泛使用,并且不会显著影响您的构建时间。
首先将以下内容添加到您的 Cargo.toml 文件中
[dependencies.windows-targets]
version = "0.52"
[dev-dependencies.windows-bindgen]
version = "0.52"
windows-bindgen
crate 仅用于生成绑定,因此只作为开发依赖。 windows-targets crate 是 windows
和 windows-sys
crate 共享的依赖,并且仅包含受支持目标的导入库。这将确保您可以链接到您可能需要的任何 Windows API 函数。
编写一个测试来生成绑定,如下所示:
#![allow(unused)] fn main() { #[test] fn bindgen() { let args = [ "--out", "src/bindings.rs", "--config", "flatten", "--filter", "Windows.Win32.System.SystemInformation.GetTickCount", ]; windows_bindgen::bindgen(args).unwrap(); } }
根据需要使用任何 Windows API。
mod bindings;
fn main() {
unsafe {
println!("{}", bindings::GetTickCount());
}
}