设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1967|回复: 3
打印 上一主题 下一主题

[已经解决] 关于调用自已编写的dll问题,各位好汉帮下忙

[复制链接]

Lv1.梦旅人

梦石
0
星屑
90
在线时间
85 小时
注册时间
2012-5-27
帖子
148
跳转到指定楼层
1
 楼主| 发表于 2013-2-27 21:52:17 手机端发表。 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1星屑
    近日,我在编写一个脚本时遇到调用自己编写的dll时开始头痛.......
我一开始用:
Win32ApI调用,结果无效,才发现它只支持系统ApI函数....
我尝试在前加两行代码;
require 'rubygems'
require 'win32api'
Win32API......
发现找不到定义的那两个文件.....

接着又用;
extern.declare....
结果发现不支持....

最后我尝试调用系统API来调用我的dll,让我头痛的事又出现了,在调用系统ApI取游戏窗口句柄时却反回一个二近制字串符给我....这让老夫如何是好,所以想求众人帮助....

顺便给个类型表,包函所有内型,仿下例子;
i = 整数型
l = 长整数型
p = 子程序指针
.......

谢谢了,到时脚本写好后大家捧个场,呵呵......

最佳答案

查看完整内容

a = Win32API.new("dll名","函数名","参数类型","返回类型")#注意这只是loadlibrary加getprocadress a.call(参数1,参数2,...)#这里才是调用 调用自己写的dll是没问题的,注意dll名和函数名是否写错... 另外,参数类型就这么几个i和l时返回与返回值相等的整数,p时返回返回值指向的字符串,可以用字符串pack与unpack来转化... 还有"v"代表没有参数 ...

Lv1.梦旅人

梦石
0
星屑
50
在线时间
270 小时
注册时间
2010-2-4
帖子
1305
2
发表于 2013-2-27 21:52:18 | 只看该作者
本帖最后由 zhangbanxian 于 2013-2-28 09:32 编辑

a = Win32API.new("dll名","函数名","参数类型","返回类型")#注意这只是loadlibrary加getprocadress
a.call(参数1,参数2,...)#这里才是调用
调用自己写的dll是没问题的,注意dll名和函数名是否写错...
另外,参数类型就这么几个i和l时返回与返回值相等的整数,p时返回返回值指向的字符串,可以用字符串pack与unpack来转化...
还有"v"代表没有参数

点评

谢谢了,经过一番探究,我发现我做的dll函数名是中文,而win32api是找不到中文函数名称的,改成英文即可  发表于 2013-2-28 18:43
好歹当年也当过大魔王过,orz
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
47
在线时间
976 小时
注册时间
2011-4-30
帖子
860
3
发表于 2013-2-27 23:00:45 | 只看该作者
变量 = Win32API.new(DLL名,……) ,dll放在游戏根目录下,我看很多脚本里都是这样调用的,并不是LZ说的那样吧?具体太专业的我也不懂。
湿滑落式骑!
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
90
在线时间
85 小时
注册时间
2012-5-27
帖子
148
4
 楼主| 发表于 2013-2-28 06:53:30 手机端发表。 | 只看该作者
羞射了 发表于 2013-2-27 23:00
变量 = Win32API.new(DLL名,……) ,dll放在游戏根目录下,我看很多脚本里都是这样调用的,并不是LZ说的那 ...

win32api它只能调用内部系统ApI,如user32,shell32......

点评

API对我而言太高深了, 看不懂, LZ加油  发表于 2013-2-28 08:12
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-19 13:42

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表