< 返回版块

coco 发表于 2023-06-29 17:16

将一个 C 库绑定到 Rust。出现这个警告,不知道如何修复。

bindings.rs:3718:18
     |
3718 |         __value: u128,
     |                  ^^^^ not FFI-safe
     |
     = note: 128-bit integers don't currently have a known stable ABI

bindings.rs 部分代码摘取

pub type _Float64x = u128;

# 3718 行
3716 extern "C" {
3717     pub fn qgcvt(
3718         __value: u128,
3719         __ndigit: libc::c_int,
3720         __buf: *mut libc::c_char,
3721     ) -> *mut libc::c_char;
3722 }

在 github 的 issue 里找到了一些资料,提到了 blocklist,但英文功底太差,没看明白怎么回事。

来自第二天的编辑:
blocklist 就是将对应的 type 和 function 屏蔽,就没有这个警告了。 但我不确定这样屏蔽是否有问题。

评论区

写评论
ruby 2023-06-30 14:43

建议把u128拆成两个u64去传输,本来 C ABI 就没有 u128

1 共 1 条评论, 1 页