Bindgen跳过C ++头文件中的定义

时间:2019-01-20 20:14:16

标签: rust bindgen

我正在尝试为SEAL C++ library编译绑定。这是my repo

// Generate the bindings
let bindings = bindgen::Builder::default()
    .generate_inline_functions(true)
    .derive_default(true)
    .header("./seal/src/seal/seal.h")
    .clang_arg("-I./seal/src/")
    .clang_arg("-std=c++17")
    .clang_arg("-x")
    .clang_arg("c++")
    .opaque_type("std::.*")
    .whitelist_type("seal::.*")
    .generate()
    .expect("Unable to generate bindings");

let out_path = PathBuf::from("./src/");
bindings
    .write_to_file(out_path.join("bindings.rs"))
    .expect("Couldn't write bindings!");

bindings.rs没有defaultparams.h

中的任何内容

我必须添加什么到Builder对象中才能在生成的绑定中包含defaultparams.h的功能?例如,我需要coeff_modulus_128()

我尝试将std::vector列入白名单,但是它对生成的绑定没有任何影响。

1 个答案:

答案 0 :(得分:2)

通过将.whitelist_function("seal::.*")添加到build.rs文件中来解决。由于内联函数未包含在类型中,因此当前配置未将其列入白名单。