温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Rust FFI 编程中的Bindgen工具怎么用

发布时间:2021-12-29 15:17:39 来源:亿速云 阅读:471 作者:柒染 栏目:大数据

本篇文章给大家分享的是有关Rust FFI 编程中的Bindgen工具怎么用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

bindgen 介绍

我们来介绍 rust-bindgen 这个项目。项目地址为:https://github.com/rust-lang/rust-bindgen。可以看到,这是一个 Rust 官方孵化的项目,目前已经比较成熟。
本篇只是一个总体的介绍,并不是对 bindgen 项目的完整讲解,也不是对    bindgen tutorial   的全面翻译。因此,真正动手操作的时候,需要仔细阅读 Tutorial 原文和查阅相关的    API  。
bindgen 是一个能自动为 C(或 C++)库生成 Rust 绑定的辅助库和命令行工具。C++ (目前)的支持并不完整。
也就是说,bindgen 可以作为一个 crate,与 Cargo 的 build.rs 机制配合,根据 C/C++ 的头文件(.h, .hpp),在构建阶段,编译主体 Rust 代码之前,自动生成 Rust 绑定文件。具体,可查看示例:  https://rust-lang.github.io/rust-bindgen/tutorial-0.html
bindgen 还有另一种用法,它本身也提供一个命令行工具。执行:
  
cargo install bindgen

便可安装。然后,在命令行下,使用

bindgen input.h -o bindings.rs

便可根据 C 头文件    input.h   动态生成 Rust 绑定文件    bindings.rs  。非常简单。
但真实的场景远不如想象中这么纯洁。于是就有一堆可能的修补工作。bindgen 为我们提供了各种修补之法(这才是精华)。具体来说,有如下一些措施:
  • 白名单
  • 黑名单
  • Opaque 对象
  • 类型替换
  • 其它
这些措施有的可以用在库的模式下,命令行模式下,以及在源代码(C)的注释中添加标注的模式下。有的三种都能覆盖,有的只能覆盖其中一种或两种。具体可在    https://rust-lang.github.io/rust-bindgen/customizing-generated-bindings.html   页面找到详细解释。
同时,bindgen 对 C 的 Union 和 Bitfields 的特性,也有对应的处理策略。这些在实际封装的过程中,可能会经常碰到。
bindgen 本身知识点,并不多。

以上就是Rust FFI 编程中的Bindgen工具怎么用,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI