我需要访问从C导出的常量的值,并在Rust中使用。
我想要从实际符号读取该值,而不仅仅是将该值复制并粘贴到Rust中(在我的情况下,该值是一个指针,并且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 cannot be const
”错误)。