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

标签 rust bindgen

我正在尝试为 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/

相关文章:

rust - 如何释放由暴露在 WebAssembly 中的 Rust 代码分配的内存?

rust - 使用AsRef时需要String的类型注释

rust - Rust说不使用导入,并且无法同时找到导入的语句

c - Rust 调用 C,C 代码中的静态常量

c - 使用 bindgen 绑定(bind)基于 TPM 的服务的 tbs.h 时出现 "unknown type name"

rust - 尝试通过 cargo 修复更新版本时找不到本地 crate

xml - 使用 serde-xml-rs 反序列化 XML 会产生 Err(重复字段 `$value` )

struct - 在不重复结构上已定义的方法的情况下实现特征

c++ - rust-bindgen 绑定(bind)引发 SIGSEGV