如何在Rust FFI中访问C全局变量/常量?

时间:2017-08-07 15:17:18

标签: c rust ffi

我需要访问Rust中从C导出的常量的值。

我想从实际符号中读取值,而不仅仅是将'n'的值复制到Rust(在我的例子中,值是指针,C检查指针是否相等)。

extern void *magic;

Rust中可以读取magic: *const c_void的语法是什么?

1 个答案:

答案 0 :(得分:4)

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关键字时,“外部项目不能为const”失败。 ¯\ _(ツ)_ /¯