Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将结构指定为RubyFFI中函数的返回值?_Ruby_Function_Struct_Return Type_Ffi - Fatal编程技术网

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

如何将结构指定为RubyFFI中函数的返回值?,ruby,function,struct,return-type,ffi,Ruby,Function,Struct,Return Type,Ffi,我必须加载几个从库本身返回结构的函数 attach_function 'fn_name', [], # ... What do I put here? RubyFFI的维基页面似乎已经过时了,所以我有点迷路了 如何创建FFI::Struct,以及如何将其指定为本机函数的返回类型 class SOME_STRUCT < FFI::Struct layout :a, :float, :b, :float end 如果它是堆栈分配的结构: typedef s

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

attach_function 'fn_name', [], # ... What do I put here?
RubyFFI的维基页面似乎已经过时了,所以我有点迷路了

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

class SOME_STRUCT < FFI::Struct 
    layout :a, :float, 
           :b, :float
end
如果它是堆栈分配的结构:

typedef struct
{ 
    float a, b; 
} SOME_STRUCT;
您应该使用以下选项:

attach_function 'fn_name', [], SOME_STRUCT.by_value
从ffi-1.0(和JRuby 1.6.0)开始,如果函数返回对某个结构的引用,请使用SOME_STRUCT.by_ref作为返回类型-当您仅使用SOME_STRUCT时,将返回一个ffi::指针,而不是某个_STRUCT的实例。您还可以使用SOME_STRUCT.ptr和SOME_STRUCT.val这两种简写形式,以使您的船漂浮的为准。
attach_function 'fn_name', [], SOME_STRUCT.by_value