龙空技术网

学习Rust编程——在Rust中调用C代码

华26104121 223

前言:

现时看官们对“r语言c调用”可能比较关切,看官们都需要剖析一些“r语言c调用”的相关文章。那么小编同时在网摘上网罗了一些对于“r语言c调用””的相关资讯,希望看官们能喜欢,小伙伴们快快来了解一下吧!

// mystrlen.cunsigned int mystrlen(char *str) {     unsigned int c;     for (c=0; *str != '\0'; c++, *str++);     return c; } 
// c_from_rust/build.rsfn main() {    cc::Build::new()        .file("mystrlen.c")        .static_flag(true)        .compile("mystrlen");}
// c_from_rust/src/main.rsuse std::os::raw::{c_char, c_uint};use std::ffi::CString; extern "C" {     fn mystrlen(str: *const c_char) -> c_uint; }fn safe_mystrlen(str: &str) -> Option<u32> {     let c_string = match CString::new(str) {         Ok(c) => c,         Err(_) => return None     };    unsafe {         Some(mystrlen(c_string.as_ptr()))     } }fn main() {     let c_string = CString::new("C From Rust").expect("failed");     let count = unsafe {         mystrlen(c_string.as_ptr())     };     println!("c_string's length is {}", count);    println!("c_string's length is {:?}", safe_mystrlen("C From Rust"));}

标签: #r语言c调用