使用Rust windows crate时无法找到'Win32'模块的问题求助
解决windows crate无法导入Win32模块的问题
问题出在windows crate采用按需启用feature的机制,默认不会包含任何Win32相关模块,所以直接写use windows::Win32::*;会报错。
解决方案
你需要在Cargo.toml里明确指定要启用的Win32子模块feature,按需添加能减少编译时间和二进制体积,也可以直接启用整个Win32大模块(不推荐,会引入大量不必要的内容)。
1. 按需添加具体Win32子模块(推荐)
修改你的Cargo.toml,给windows依赖加上features字段,比如添加常用的基础模块和控制台模块:
[package] name = "windows_test_1" version = "0.1.0" edition = "2021" [dependencies] windows = { version = "0.51.1", features = ["Win32_Foundation", "Win32_System_Console"] }
2. 启用整个Win32模块(不推荐)
如果想一次性启用所有Win32相关模块,可以这样写:
[package] name = "windows_test_1" version = "0.1.0" edition = "2021" [dependencies] windows = { version = "0.51.1", features = ["Win32"] }
验证代码
修改完Cargo.toml后,原来的代码就能正常编译了,也可以指定具体子模块来导入:
// 通配导入所有启用的Win32模块 use windows::Win32::*; // 或者指定具体子模块导入 // use windows::Win32::Foundation::*; fn main() { // 这里可以添加Win32相关功能代码 }
内容的提问来源于stack exchange,提问作者Bigbug314
相关产品推荐
相关产品推荐

