Project1
标题:
加载so以win32ole为例
[打印本页]
作者:
SixRC
时间:
2019-4-28 00:16
标题:
加载so以win32ole为例
我用了 VA rgss301
加载so库的原理
so本质是dll
ruby对一个比方 aa.so 的库 加载就是调用它的 Init_aa 导出函数
而拓展库需要用到ruby一些函数 比方定义类 方法 新建字符串啥的
rgss是闭源的 意味着这些函数没有作为导出函数
我们要加载so 只要建立这个函数导出表 然后调用 Init 就行
然后 有些内部函数蛮好找的 只要和同版本的源码比照
不过有几个坑
一是有些函数rgss用不到 所以就删掉了 也就是没了
这时候得自己去补充 靠子函数写全
二是rgss的编译优化导致子函数调用规范不那么正常
比方有些是 eax 作为第一个参数 其余压栈 有些是 ebx作为第一个参数 等等
三依旧是优化 很多函数展开了...
最大的坑还是烦人
win32ole大概需要一百来个函数吧 找了一天 找全了
然后刚刚顺便补全了 Fiber 的功能
没写win32ole的范例 因为有些控件不是每台电脑上有的 主要还是..我懒
请自行测试吧!
先这样
睡觉了
win32ole.zip
(1.41 MB, 下载次数: 116)
2019-4-28 00:13 上传
点击文件名下载附件
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1