2012-11-23 104 views
1

我有一個關於ruby Interop和共享庫的問題。從Ruby調用共享庫

當我使用以下代碼:

module mymodule 
    extend DL::Importer 
    dlload './lib.so' 
    extern 'int Open(int my_id, int size, int creat)' 
end 

int類型沒有在紅寶石上下文識別。爲什麼?

回答

0

不要在您的通話extern指定參數名稱,只是類型:

extern 'int Open(int, int, int)' 
+0

感謝,但現在我有這個其他問題:/usr/lib/ruby/1.9.1/dl/func。 rb:55:在'call'中:沒有從nil到整數的隱式轉換(TypeError) from /usr/lib/ruby/1.9.1/dl/func.rb:55:in'call' from test.rb: 13:在'CloseMemoryMapped' from test.rb:34:'CallProcess' from test.rb:45:in'

' –

+0

我不能在begin - > end block之外聲明一個變量嗎? –

+0

在這種情況下開始 \t添加my_id = 1 #random_id \t大小= 2048 \t穿心蓮= 1 \t ID = 1 \t ID =提出Tesuto.Open(添加my_id,大小,穿心蓮) \t 救援 \t通( ) 確保 \t把Tesuto.Close(id) 結束 –