| 
 | 
 
 本帖最后由 urenai 于 2022-7-20 00:37 编辑  
 
下面的是易语言DLL   公开的 子程序 2个参数都必须为4字节 小数。 
 
- .版本 2
 
 - .子程序 xs, , 公开
 
 - .参数 小数1, 小数型
 
 - .参数 小数2, 小数型
 
 - 信息框 (“小数参数1:” + 到文本 (小数1) + #换行符 + “小数参数2:” + 到文本 (小数2), 0, “易语言接收2个小数”, )
 
 
  复制代码 
 
 
 
火山的没法复制代码,就截图+源码了。 
 
XS.v
(2.9 KB, 下载次数: 13)
 
 
 
 
每次测试不通都放弃,多少次了,在非嵌入式情况下,小数8字节,传递出去始终会变形。 
不搞了,小数在这里画个句号。这是我最终的解决方案了。 
 
既然整数和单小数都是4字节, 
那么干脆将双精度小数 使用 嵌入式 转到 单精度小数, 
再取出单小数的内存地址,以整数读出。 
 
再以整数值传递出去。测试完美正确。没有变形。 
在定义外部DLL库的时候,只需要将 单精度小数定义成 整数,使用上面方法:_小数转整数() 。返回值赋参即可。 
认真看易语言导出函数参数定义的是小数,而火山调用的定义为整数,这应该不难理解了吧。 
哎、非嵌入情况下,硬是拐了个大弯。幸好是绕回来了。 
 
 
少上个图,在编辑一下吧。 
 
 
 
 
 
 
  
  
 
又更新了一下,搞了个【单小数类】用作输出输入小数。 
先上易语言的参考下。 
- .版本 2
 
  
- .子程序 xs, , 公开
 
 - .参数 小数1, 小数型
 
 - .参数 小数2, 小数型
 
 - .参数 小数指针3, 整数型, , 这个是模拟写回小数,,,传输
 
 - .局部变量 小数4, 小数型
 
 - 小数4 = 1.2345
 
 - 写到内存 (小数4, 小数指针3, )
 
 - 信息框 (“小数参数1:” + 到文本 (小数1) + #换行符 + “小数参数2:” + 到文本 (小数2), 0, “易语言接收2个小数”, )
 
 
  复制代码 
 
 
 
 
 
照样子火山上图+源码 
 
FLOATCLASS.v
(2.68 KB, 下载次数: 17)
 
 
 
 
 
 
 
 
 
 
 |   
 
 
 
 |