先检查看看参数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给的代码太少了。
采用的共享内存方式。第1个用来存储接收到的数据块,第2个用来放接收端(64位)的winid,主要是提供给发送32位的dll调用端读取,在接收到数据后通知64位的接收端有新的数据需要从共享内存中读取。
第3个共享内存区是同步信号区。
你理解DLL是什么意思不?这么说吧:一个项目里的两个类之间调用方法和属性你会不?
引用DLL和这个一模一样,区别就在于要把这个类库(dll)在你的项目的引用树里添加进去,其他的没有了,欢迎追问!!!