Bindgen 跳过 C++ 头文件中的定义
Bindgen skipping definitions from C++ header file
我正在尝试为 SEAL C++ library. Here is 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
列入白名单,但它对生成的绑定没有任何影响。
通过将 .whitelist_function("seal::.*")
添加到 build.rs
文件来解决。由于内联函数未包含在类型中,因此当前配置未将它们列入白名单。
我正在尝试为 SEAL C++ library. Here is 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
列入白名单,但它对生成的绑定没有任何影响。
通过将 .whitelist_function("seal::.*")
添加到 build.rs
文件来解决。由于内联函数未包含在类型中,因此当前配置未将它们列入白名单。