gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 08:07:15 35 4
gpt4 key购买 nike

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

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com