我正在尝试为 SEAL C++ library 编译绑定(bind).这是 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生成的绑定(bind)中的函数?例如,我需要 coeff_modulus_128()
。
我尝试将 std::vector
列入白名单,但它对生成的绑定(bind)没有任何影响。
最佳答案
通过将 .whitelist_function("seal::.*")
添加到 build.rs
文件中解决。由于内联函数未包含在类型中,因此它们未被当前配置列入白名单。
关于rust - Bindgen 跳过 C++ 头文件中的定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54280550/