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

扫描下方二维码关注公众号和小程序↓↓↓

扫描下方二维码关注公众号和小程序↓↓↓


Today On History
Browsing Refresh