gpt4 book ai didi

c - 如何在 Rust 的函数堆栈上放置 C 结构?

转载 作者:行者123 更新时间:2023-12-03 11:43:11 25 4
gpt4 key购买 nike

我想转移以下C代码

HMAC_CTX context;
HMAC_CTX_init(&context);

进入 rust 。但是,虽然定义 extern 函数很容易,但在 Rust 中直接使用 C 结构似乎是不可能的。

extern "C" {
use HMAC_CTX; // does not work!
fn HMAC_CTX_init(ctx: *mut HMAC_CTX);
}

我知道我可以在 Rust 中定义一个占位符结构

struct HMAC_CTX;

...但是 的实例可能没有足够的空间容纳真正的 C 结构。

let mut ctx = HMAC_CTX;
unsafe { HMAC_CTX_init(&mut ctx); }

有没有办法在不重新定义 Rust 中的整个结构的情况下解决这个问题?这将创建从外部代码到我的 Rust 项目的依赖关系,我想避免这种情况。

最佳答案

使用rust-bindgen生成 Rust 绑定(bind)。如果放置在构建脚本中,它将生成相应 C 结构的 rust 版本并保持同步。

增加了构建过程的复杂性并增加了依赖。

关于c - 如何在 Rust 的函数堆栈上放置 C 结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61815684/

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