建设银行网上银行网站可以开通网银,wordpress 种子插件,企业画册设计排版,深圳公司官网关于Rust调用C#xff0c;因为接口比较复杂#xff0c;貌似Rust不打算支持。而对于C函数#xff0c;则相对支持较好。
如果要研究C/Rust相互关系的话#xff0c;可以参考#xff1a;
https://docs.rs/cxx/latest/cxx/
Rust ❤️ C
这里只对调用C静态库做一个最简短的介…关于Rust调用C因为接口比较复杂貌似Rust不打算支持。而对于C函数则相对支持较好。
如果要研究C/Rust相互关系的话可以参考
https://docs.rs/cxx/latest/cxx/
Rust ❤️ C
这里只对调用C静态库做一个最简短的介绍。
根据官方教材的内容略作一个说明官方的程序在这里
Unsafe Rust - The Rust Programming Language
这里我们建一个StaticLib1.cpp的文件内容如下
#include cstdlib
#include cinttypesextern C std::int32_t abs(std::int32_t n) {return std::abs(static_caststd::intmax_t(n));
}
注意这里接口是extern C也就是标准C接口。
无论是用visual studio 2019或GCC在windows下都可以生成这样一个静态库StaticLib1.lib。
然后新建一个rust程序
cargo new rust-to-c
将rust-to-c/src/main.rs的内容改为
#[link(name StaticLib1)]
extern C {fn abs(input: i32) - i32;
}fn main() {unsafe {println!(Absolute value of -3 according to C: {}, abs(-3));}
}
再拷贝lib到
rust-to-c/StaticLib1.lib
然后
cargo build
就可以看到生成了文件
rust-to-c/target/debug/rust-to-c.exe
用指令
cargo run
就可以得到执行结果了如下 参考资料
FFI - The Rustonomicon
本文结束