3
我需要訪問Rust中C導出的常量值。如何在Rust FFI中訪問C全局變量/常量?
我想讀取實際符號的值,而不是隻是將值'n'paste的價值鏽(在我的情況下,該值是一個指針,和C檢查指針相等)。
extern void *magic;
什麼語法可以在Rust中讀取magic: *const c_void
?
我需要訪問Rust中C導出的常量值。如何在Rust FFI中訪問C全局變量/常量?
我想讀取實際符號的值,而不是隻是將值'n'paste的價值鏽(在我的情況下,該值是一個指針,和C檢查指針相等)。
extern void *magic;
什麼語法可以在Rust中讀取magic: *const c_void
?
use std::os::raw::c_void;
extern "C" {
#[no_mangle]
static magic: *const c_void;
}
可選的,extern
之前可以有#[link(kind="static", name="<c library name>")]
得到實際聯繫的象徵。
這有點奇怪,常數被聲明爲static
,但const
關鍵字失敗,因爲「extern items不能爲const
」。 ¡\ _(ツ)_ /¯\ _(ツ)_/
'const'和'static'並不意味着Rust和C中的相同事情。Rust的'static'定義了該值有一個地址,'const'沒有。在這種情況下,'const'更接近C'#define'。回顧[本書第一版中的'const'和'static'章節](https://doc.rust-lang.org/stable/book/first-edition/const-and-static.html)來了解更多。 – Shepmaster