2011-03-20 40 views

回答

8
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 
+4

作爲FFI-1.0(和JRuby的1.6.0),如果函數返回對結構的引用,則使用SOME_STRUCT.by_ref作爲返回類型 - 當你只使用SOME_STRUCT時,你會取回一個FFI :: Pointer而不是SOME_STRUCT的一個實例。您也可以使用SOME_STRUCT.ptr和SOME_STRUCT.val這兩種簡寫形式 - 無論哪一種都漂浮在您的船上。 – 2011-03-23 04:09:09

相關問題