先检查看看参数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给的代码太少了。
解决开机出现dll文件加载失败的方法总会时不时的在论坛看到有人发贴问这些问题(加载c:****出错,找不到指定文件),我利用搜索功能看了一上,所有的回答基本上都差不多,所以我整理了一下,大致归纳为下面这些,希望有这种问题的朋友在发贴前先看看此贴,如果所说的这些方法还不能解决您的问题,您可以再发贴,寻求帮助,谢谢!~~
一、关闭启动程序法
开始菜单→运行→输入“msconfig”→确定→打开系统配置实用程序→点击"启动"选项卡→在命令里找到含该某某dll的那一项(或没用的启动项),把前边的勾去掉,然后确定,重启计算机
二、注册表法
开始→运行→输入“regedit”→确定→打开注册表编辑器。找到以下的位置
,删除含某某dll的相应键值:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
在注册表编辑器中→菜单栏→编辑→查找→输入某某dll→搜索→删除查找到的对应项目。可能不止一个。可以直接按f3键查找下一个。
其它
1:进安全模式用360安全卫士清理垃圾文件
2:去下载一个DLL(或到其它计算机上复制一份)覆盖它。
dll因为某些原因(最大可能是因为它是个病毒或流氓软件的dll文件,被杀软删除了)丢失了,但其相关的注册信息却还在,导致系统开机时还加载它,却又找不到它的文件,所以报错。