键盘快捷键

在章节间导航

S/ 在书中搜索

? 显示此帮助

Esc 隐藏此帮助

独立代码生成

即使在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 是 windowswindows-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());
    }
}