Rust #[no_mangle] 属性
Rust About 444 words作用
属性no_mangle
,用来关闭Rust
的名称修改(name mangling
)功能。Mangling
是编译器在解析名称时,修改我们定义的函数名称,增加一些用于其编译过程的额外信息。
但在与其它语言交互时,如果函数名称被编译器修改,程序开发者无法知道修改后的函数名称,其它语言也无法按原名称调用。
示例
所以为了使Rust
函数能在其它语言中被调用,必须禁用Rust
编译器的名称修改功能。通过示例代码中增加属性#[no_mangle]
,告诉Rust
编译器不要修改此函数的名称。
#[no_mangle]
pub extern "C" fn call_from_rust() {
println!("This is a Rust function for C!");
}
参考
https://doc.rust-lang.org/book/ch19-01-unsafe-rust.html#calling-rust-functions-from-other-languages
Views: 2,013 · Posted: 2023-04-23
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓
Loading...