如何将结构指定为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