Ruby调用DLL函数的问题,无法正常显示字符串;DLL编程如何引用需要的DLL?

Python012

Ruby调用DLL函数的问题,无法正常显示字符串;DLL编程如何引用需要的DLL?,第1张

Win32API.new('DemoDLL','AddStringX','p','p').call(a)

先检查看看参数a是否是字符串,有必要的话就a.to_s.再看C的DLL返回的数据是否为字符或者字符串。个人感觉是DLL的问题,如果不行就试试下面的。

win32api应该是比不上dl库,试试使用dl库

require 'dl'

myd1=DL.dlopen('DEMO.dll')

myd2=myd1['AddStringX','CS']

print myd2.call('Test')

或者是print mydll.call('Test').to_s

好久没用Ruby,搞不清楚了。

第二个问题

DLL直接在开头include不就ok了,

之后直接调用函数就可以了。。。

一些系统关键DLL应该默认就include的了,直接调用内部的函数就可以了

没有写过C的DLL只是根据经验而已,DLL应该和普通的exe在调用dll上没区别。

可惜你的DLL给的代码太少了。

system(“.ruby”)或者load 'another.rb'

具体代码如下:

# 返回ls的输出

s=`ls`

cmd= "ls"

s= `#{cmd}`

# 返回true or false

s= system('ls')

cmd= 'ls'

s= system(cmd)

#返回输出

s= %x[uptime]

#用top进程替换当前ruby进程

exec "top"

cmd = 'top'

exec cmd

值传递仅仅传递的是

引用传递,传递的是内存地址,修改后会改变内存地址对应储存的值。

数组来举例就最清楚了,例如我们定义一个数组a[]={1,2}

那么a[0]=1,a[1]=2。

如果我们把数组a里的元素值作为参数传递,实际上只是进行了值传递,对数组本身没有影响

如果我们把 数组a的指针作为参数传递,那么假如处理的函数就可以直接修改数组a里的值。

代码实例:(只是写个大概的逻辑,语法可能有错误)

main()

{

int a[]={1,2}

test(a)

printf(a[0]) //此处打印的值是3, 这就是引用传递。

}

public void test(int b[])

{

b[0]=3

}