Rust 嵌入式开发系列 Rust 与 Wasm/WebAssembly 开发系列 Rust 高性能计算系列(待定) ---- bindgen 介绍 本篇,我们来介绍 rust-bindgen 这个项目 项目地址为:https://github.com/rust-lang/rust-bindgen。可以看到,这是一个 Rust 官方孵化的项目,目前已经比较成熟。 具体,可查看示例:https://rust-lang.github.io/rust-bindgen/tutorial-0.html bindgen 还有另一种用法,它本身也提供一个命令行工具。 具体可在 https://rust-lang.github.io/rust-bindgen/customizing-generated-bindings.html 页面找到详细解释。
具体可以参考:https://rust-lang.github.io/rust-bindgen/ 与此同时,直接使用bindgen生成的 Rust FFI 绑定函数,需要通过 unsafe 的方式访问
rust-bindgen[24] Automatically generates Rust FFI bindings to C (and some C++) libraries. https://rust-lang.github.io /rust-bindgen/[25] "bindgen"是一个工具,可以自动生成Rust与C(和部分C++)库的外部函数接口(FFI)绑定。 futures-rs [23] https://rust-lang.github.io/futures-rs/: https://rust-lang.github.io/futures-rs/ [24] rust-bindgen : https://github.com/rust-lang/rust-bindgen [25] https://rust-lang.github.io/rust-bindgen/: https:// rust-lang.github.io/rust-bindgen/ [26] rust.vim: https://github.com/rust-lang/rust.vim [27] rls: https
你实际上不能写一个C解析器 C实际上没有ABI,甚至没有定义的类型布局 C语言学习资源汇总 实际上无法解析一个C头文件 Aria曾断言解析C基本上是不可能的,但有人说其实有很多工具可以读取C头文件,比如rust-bindgen 比如,人们使用rust-bindgen和friends自动化处理一些事,但很多时候,定义会被检查或手工调整。因为人们不想浪费时间,去尝试Phantomderp的定制C构建系统可移植地工作。
这里就有几个问题: 你实际上不能写一个C解析器 C实际上没有ABI,甚至没有定义的类型布局 实际上无法解析一个C头文件 Aria曾断言解析C基本上是不可能的,但有人说其实有很多工具可以读取C头文件,比如rust-bindgen 比如,人们使用rust-bindgen和friends自动化处理一些事,但很多时候,定义会被检查或手工调整。因为人们不想浪费时间,去尝试Phantomderp的定制C构建系统可移植地工作。
有很多工具可以读取 C 语言的头文件,比如 rust-bindgen!” 但还是不行: bindgen 使用 libclang 来解析 C 和 C++ 头文件。 是的,人们使用 rust-bindgen 之类的工具来自动化这个过程,但很多时候,还是需要检查或手工调整那些定义,生命短暂,实在无法让经过某人奇怪定制的 C 构建系统可移植。
有很多工具可以读取 C 语言的头文件,比如 rust-bindgen!” 但还是不行: bindgen 使用 libclang 来解析 C 和 C++ 头文件。 是的,人们使用 rust-bindgen 之类的工具来自动化这个过程,但很多时候,还是需要检查或手工调整那些定义,生命短暂,实在无法让经过某人奇怪定制的 C 构建系统可移植。
https://rust-lang.github.io/rust-bindgen/cpp.html 为了解决这些问题,我们通常会创建一个简化的 C++ 头文件和源包装程序,以导出对 bindgen 友好的函数