月度归档: 2023 年 5 月

  • Rust调用C++库

    Rust调用C++库

    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 =