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

Project1

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

[原创发布] 加载so以win32ole为例

[复制链接]

Lv4.逐梦者

梦石
0
星屑
13562
在线时间
2753 小时
注册时间
2014-10-4
帖子
756

R考场第七期纪念奖

跳转到指定楼层
1
发表于 2019-4-28 00:16:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
我用了 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, 下载次数: 117)

评分

参与人数 2+2 收起 理由
kirh_036 + 1 精品文章
hyrious + 1 塞糖

查看全部评分

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

本版积分规则

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

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

GMT+8, 2024-11-21 19:32

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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