以下是一个完整的 Rust 创建 Windows DLL 动态库的实例,包含详细步骤和代码示例:
🚀 完整步骤
1. 创建 DLL 项目
cargo new --lib rust_dll
cd rust_dll
2. 配置 Cargo.toml
[package]
name = "rust_dll"
version = "0.1.0"
edition = "2021"
# 关键配置:指定生成动态链接库
[lib]
crate-type = ["cdylib"]
[dependencies]
windows = { version = "0.54.0", features = [
"Win32_Foundation",
"Win32_System_LibraryLoader"
]}
3. 编写 DLL 代码 (src/lib.rs)
use std::os::raw::c_char;
use std::ffi::{
CStr, CString};
use windows::Win32::System::LibraryLoader;
// 基本数学函数示例
#[no_mangle]
pub extern "C" fn add(a: i32, b: i32) -> i32 {
a + b
}
// 字符串处理示例 (Rust <-> C)
#[no_mangle]
pub extern "C" fn to_uppercase(input: *const c_char) -> *mut c_char {
let c_str = unsafe {
CStr::from_ptr(input) };
let r_str = c_str.to_str().unwrap();
let uppercased = r_str.to_uppercase();
CString::new(uppercased).unwrap().into_raw()
}
// 内存释放函数 (必须暴露!)
#[no_mangle]
pub extern "C" fn free_string(ptr: *mut c_char) {
unsafe {
if ptr.is_null() {
return;
}
let _ = CString::from_raw(ptr);
}
}
// DLL 入口点 (可选)
#[no_mangle]
pub extern "system" fn DllMain(
_module: isize,
call_reason: u32,
_reserved: *mut std::ffi::c_void
) -> i32 {

最低0.47元/天 解锁文章
1075

被折叠的 条评论
为什么被折叠?



