如何在dart FFI中使用布尔类型?
我想用带锈的飞镖。但我找不到任何关于如何在FFI中使用c兼容布尔值的提及/文档/示例。甚至Dart官方文档中的例子也没有提到布尔人。在外国金融机构中不可能使用布尔语吗?如果不支持,我如何才能正确地使用它们?我刚刚发现,Dart的FFI库还不支持布尔类型(或者它们不支持,我不确定)。 但由于Rust的如何在dart FFI中使用布尔类型?,dart,rust,Dart,Rust,我想用带锈的飞镖。但我找不到任何关于如何在FFI中使用c兼容布尔值的提及/文档/示例。甚至Dart官方文档中的例子也没有提到布尔人。在外国金融机构中不可能使用布尔语吗?如果不支持,我如何才能正确地使用它们?我刚刚发现,Dart的FFI库还不支持布尔类型(或者它们不支持,我不确定)。 但由于Rust的bool类型与C的bool 飞镖 typedef some_function=ffi.Int32 function() 要将其转换为bool,我必须使用1进行位掩码,以便仅获取第一位,然后查看它是否等
bool
类型与C的bool
,并在Dart中使用Int32
作为FFI类型
0将变为false,而1将变为true。我认为这与将i32转换为Rust中的bool的结果相同
实施,
pub extern“C”fn某些函数(arg:bool){
和Dart中的类型定义
typedef some_function=ffi.Void function(ffi.Int32);
只是为了补充已接受的答案(目前还不能评论),尽管它通过将bool
值转换为int
来工作,但在我的案例中,另一种方式会导致问题
pub extern“C”fn some_function()->bool
飞镖
typedef some_function=ffi.Int32 function()代码>
要将其转换为bool
,我必须使用1
进行位掩码,以便仅获取第一位,然后查看它是否等于零
我不确定我是否读取了无效内存,或者它之前是否没有被清除
在Dart 2.10.4中观察到