最近在搞一个应用的扩展,是用动态链接库.so的方式,原来是C语言写得,现在想用纯Rust实现,遇到了如题中的问题:
第一种方案:
extern "C" {
#[no_mangle]
static a_global_variable: *mut c_void = 0 as *mut c_void;
}
编译是不通过的,因为不允许在extern里面有赋值操作。
第二种方案:
extern "C" {
#[no_mangle]
static a_global_variable: *mut c_void;
}
before_main! {
unsafe {
*a_global_variable = 0 as *mut c_void;
}
}
我觉得可行,但是crate-type = "cdylib"得有在main函数前执行before_main!这种手段,
求大神指教!
1
共 1 条评论, 1 页
评论区
写评论其实是我搞复杂了: https://stackoverflow.com/questions/31701655/can-a-rust-constant-static-be-exposed-to-c