Google uses AI technology to translate content into your preferred language. AI translations can contain errors.
使用 bindgen 集成 C/C++
如果您需要从 Rust 调用某些 C 或 C++ API,可以使用 bindgen,该工具可从 C 和 C++ 标头生成 Rust 代码。如需了解更多文档,请参阅bindgen 用户指南。
要求
我们的 bindgen 预构建版本目前会动态链接到 clang,这意味着您需要在库搜索路径中提供 libclang.so。
在基于 Debian 的系统上,通常可以使用 sudo apt install llvm-dev libclang-dev clang 来实现此目的。
生成 Rust 代码
虽然生成的代码会签入到 Git 中,但重要的是,任何贡献者都可以轻松更新生成的代码。第一步是在目标目录中创建一个名为 bindgen.sh 的可执行文件。如需查看使用预构建的 bindgen 二进制文件并进一步自定义输出的示例,请参阅 //src/lib/usb_rs/bindgen.sh。
在开发机器上运行脚本,以生成将与 build 目标一起提交的 Rust 文件。
构建生成的代码
获得能够可靠地从 C++ 头文件生成 Rust 文件的脚本后,需要将其添加到 build 中。生成的文件可以作为独立的 rust_library 目标,也可以作为另一个 Rust 目标的子模块包含在其中,如//src/lib/usb_rs 示例中所示。确保包含 bindgen 中文件的库目标也在 non_rust_deps 中包含相应的外部依赖项。
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-07-26。
[[["易于理解","easyToUnderstand","thumb-up"],["解决了我的问题","solvedMyProblem","thumb-up"],["其他","otherUp","thumb-up"]],[["没有我需要的信息","missingTheInformationINeed","thumb-down"],["太复杂/步骤太多","tooComplicatedTooManySteps","thumb-down"],["内容需要更新","outOfDate","thumb-down"],["翻译问题","translationIssue","thumb-down"],["示例/代码问题","samplesCodeIssue","thumb-down"],["其他","otherDown","thumb-down"]],["最后更新时间 (UTC):2025-07-26。"],[],[]]