Rust WINAPI 输出 HMODULE 值
Rust WINAPI outputting HMODULE value
我正在尝试编写一个调用 WINAPI 的简单 Rust 控制台应用程序。
我将省略代码中明显的 use 和 extern crate 部分。这是:
fn win32_string(value : &str ) -> Vec<u16> {
OsStr::new( value ).encode_wide().chain( once( 0 ) ).collect()
}
fn main() {
println!("===== Rust Windows experiment #1 =====");
let module_name = win32_string("ntdll.dll");
let h_instance: HMODULE;
unsafe {
h_instance = GetModuleHandleW(module_name.as_ptr());
}
println!("Value of h_instance: {:#?}", h_instance);
}
我正在针对目标三元组构建它:
[build]
target = "i686-pc-windows-msvc"
如您所见,我的目标是构建一个 32 位应用程序。现在我的程序输出如下:
===== Rust Windows experiment #1 =====
Value of h_instance: 0x00007ffb61c40000
显示的是 64 位地址。这怎么会发生?我是否将 HMODULE 值错误地写入了控制台,或者我做错了什么?
在 rodrigo 的帮助下:build 标签应该包含在 .cargo\config 文件中而不是 cargo.toml 文件中,以便编译器能够获取它。 :) 更改后,问题现已解决。 :)
我正在尝试编写一个调用 WINAPI 的简单 Rust 控制台应用程序。
我将省略代码中明显的 use 和 extern crate 部分。这是:
fn win32_string(value : &str ) -> Vec<u16> {
OsStr::new( value ).encode_wide().chain( once( 0 ) ).collect()
}
fn main() {
println!("===== Rust Windows experiment #1 =====");
let module_name = win32_string("ntdll.dll");
let h_instance: HMODULE;
unsafe {
h_instance = GetModuleHandleW(module_name.as_ptr());
}
println!("Value of h_instance: {:#?}", h_instance);
}
我正在针对目标三元组构建它:
[build]
target = "i686-pc-windows-msvc"
如您所见,我的目标是构建一个 32 位应用程序。现在我的程序输出如下:
===== Rust Windows experiment #1 =====
Value of h_instance: 0x00007ffb61c40000
显示的是 64 位地址。这怎么会发生?我是否将 HMODULE 值错误地写入了控制台,或者我做错了什么?
在 rodrigo 的帮助下:build 标签应该包含在 .cargo\config 文件中而不是 cargo.toml 文件中,以便编译器能够获取它。 :) 更改后,问题现已解决。 :)