Rust基于FFI可以调用其他语言,这个支持对于C是很完备的,对于C++有一些限制。常用的工具有cxx和autocxx,前者可控简单,后者强大易用。我一般喜欢使用autocxx,可以少写一些代码。
我们这里用Rust调用V8为例子。
打印固定字符串
首先引入autocxx
[dependencies]
autocxx = "0.25.0"
cxx = "1.0"
[build-dependencies]
autocxx-build = "0.25.0"
我们先尝试查询一下V8的版本号。
新建input文件,定义一个方法version,先返回一个固定字符串。
inline std::string version() {
return "0.0.1";
}
main.rs方法添加代码
use autocxx::prelude::*;
include_cpp! {
#include "../include/input.h"
safety!(unsafe_ffi)
generate!("version")
}
fn main() {
let rv8 = …