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

Project1

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

[已经过期] Win32API.new的参数类型为浮点数或长整数时用什么符号表示?

[复制链接]

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
39855
在线时间
7493 小时
注册时间
2009-7-6
帖子
13485

开拓者贵宾

1
发表于 2014-6-29 13:25:25 | 显示全部楼层
浮点数是指针,p
RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
39855
在线时间
7493 小时
注册时间
2009-7-6
帖子
13485

开拓者贵宾

2
发表于 2014-6-29 14:43:06 | 显示全部楼层
流川枫 发表于 2014-6-29 13:32
对于double和longlong的返回值是存储在eax和edx寄存器,也就是说返回值不是指针而是在寄存器里。用"p"将 ...

那pack一下就好,依旧以指针传过去。

点评

只有参数是传递指针的形式才能够用"p",也就是说如果参数是直接double,汇编将push两次将64位的变量压入堆栈。返回值则是将高位mov到edx,低位到eax。   发表于 2014-6-29 15:10
RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
39855
在线时间
7493 小时
注册时间
2009-7-6
帖子
13485

开拓者贵宾

3
发表于 2014-6-29 15:53:49 | 显示全部楼层
流川枫 发表于 2014-6-29 15:21
@fux2
你看一下汇编


所以我叫你pack一下啊。dll里取址就行。
你硬要直接传过去默认是不支持的。

点评

那个pack是做什么用的我还不清楚,写个例子吧  发表于 2014-6-29 16:17
RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
39855
在线时间
7493 小时
注册时间
2009-7-6
帖子
13485

开拓者贵宾

4
发表于 2014-6-29 16:24:20 | 显示全部楼层
流川枫 发表于 2014-6-29 16:14
比起纸上谈兵不如给个范例代码吧
  1. double = 3.14159265358 # 测试用浮点数
  2. pdouble = [double].pack("d") # 取得以double形式序列化的double变量的指针
复制代码
pdouble传给dll,dll里用浮点数指针来玩就可以。

点评

看来这个问题可能是RUBY的设计缺陷,真心无语  发表于 2014-6-29 16:35
RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (管理员)

老黄鸡

梦石
0
星屑
39855
在线时间
7493 小时
注册时间
2009-7-6
帖子
13485

开拓者贵宾

5
发表于 2014-6-29 16:44:47 | 显示全部楼层
流川枫 发表于 2014-6-29 16:29
不过这样是建立在那个API是传递指针,如果必须调用 如 ULONGLONG WINAPI GetTickCount64(void); 这个API ...


评论和回复写一起把,每次收到好几个提醒真蛋疼。

不兼容32位寄存器的类型本身是不支持的,你必须通过第三方dll二次调用。(浮点不支持可能是缺陷吧。)

点评

这个API本来是返回一个小数然后在脚本里乘以max得到整数,所以现在直接将乘法也放到API里然后返回整数。对于这个API而言比起改成pack更方便。  发表于 2014-6-29 17:28
一定要用浮点用上面的pack方法就行,只要dll能接收指针,任何类型或者结构体都能传进去。  发表于 2014-6-29 17:06
好吧,幸好那个DLL是我自己写的,现在我放弃矜持直接返回整数 就是从 double test()改为long test(long max)  发表于 2014-6-29 16:55
RGDirect - DirectX驱动的RGSS,点我了解.
RM全系列成套系统定制请联系QQ1213237796
不接受对其他插件维护的委托
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-11 21:14

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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