ruby - 如何在 RubyFFI 中将结构指定为函数的返回值?

标签 ruby function struct return-type ffi

我必须加载几个从库本身返回结构的函数。

attach_function 'fn_name', [], # ... What do I put here?

RubyFFI 的 Wiki 页面似乎已经过时,所以我在这里有点迷路。

如何创建 FFI::Struct,以及如何将其指定为 native 函数的返回类型?

最佳答案

class SOME_STRUCT < FFI::Struct 
    layout :a, :float, 
           :b, :float
end

然后

attach_function 'fn_name', [], SOME_STRUCT

如果它是堆栈分配的结构:

typedef struct
{ 
    float a, b; 
} SOME_STRUCT;

你应该使用这个:

attach_function 'fn_name', [], SOME_STRUCT.by_value

关于ruby - 如何在 RubyFFI 中将结构指定为函数的返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5372483/

相关文章:

javascript - 无操作的 JavaScript 约定是什么?

c++ - 基本的 if, else-if 脚本没有按预期工作

c - 未创建多个队列 - C

ruby try_convert 类方法不转换

ruby - 在没有 rails 的 ruby​​ 中实现一个 rails before_filter

ruby - 尽管被列入白名单,但 ActiveAdmin 未经允许的参数

r - 调用函数时设置列名

c++ - 根据属性值删除结构 vector 中的元素

C# 结构 : Unassigned local variable?

java - 如果我没有与之共享,JRuby 中的 Ruby 脚本可以使用我的 Java 类吗?