2 回答

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超8個(gè)贊
Win32API.new('DemoDLL','AddStringX','p','p').call(a)
先檢查看看參數(shù)a是否是字符串,有必要的話就a.to_s.再看C的DLL返回的數(shù)據(jù)是否為字符或者字符串。個(gè)人感覺(jué)是DLL的問(wèn)題,如果不行就試試下面的。
win32api應(yīng)該是比不上dl庫(kù),試試使用dl庫(kù)
require 'dl'
myd1=DL.dlopen('DEMO.dll')
myd2=myd1['AddStringX','CS']
print myd2.call('Test')
或者是print mydll.call('Test').to_s
好久沒(méi)用Ruby,搞不清楚了。
第二個(gè)問(wèn)題
DLL直接在開(kāi)頭include不就ok了,
之后直接調(diào)用函數(shù)就可以了。。。
一些系統(tǒng)關(guān)鍵DLL應(yīng)該默認(rèn)就include的了,直接調(diào)用內(nèi)部的函數(shù)就可以了
沒(méi)有寫(xiě)過(guò)C的DLL只是根據(jù)經(jīng)驗(yàn)而已,DLL應(yīng)該和普通的exe在調(diào)用dll上沒(méi)區(qū)別。
可惜你的DLL給的代碼太少了。
- 2 回答
- 0 關(guān)注
- 108 瀏覽
添加回答
舉報(bào)