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

Project1

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

[已经过期] 可以dll调用类的方法么

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
60
在线时间
61 小时
注册时间
2006-9-15
帖子
946
跳转到指定楼层
1
发表于 2009-10-21 14:12:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
RT
把一个类作参数传给Dll,dll可以调用此类的方法
这有办法实现么

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
2
发表于 2009-10-22 02:54:33 | 只看该作者
本帖最后由 紫苏 于 2009-10-22 03:00 编辑

你在 DLL 映射到 RM 进程地址空间后中,再加载一下 RGSS****.DLL(system32 下的那个),然后调用其中的 RGSSEval 函数即可动态解释 RM 的脚本了,前提是类已经建立了
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
61 小时
注册时间
2006-9-15
帖子
946
3
 楼主| 发表于 2009-10-23 09:25:30 | 只看该作者
这个。。。不太明白。。。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
4
发表于 2009-10-23 09:54:30 | 只看该作者
本帖最后由 紫苏 于 2009-10-23 09:55 编辑

比如你在你的的 DLL 导出函数中这样写:

  1. HMODULE hModule = LoadLibrary("RGSS****.dll");
  2. int (*RGSSEval)(void);
  3. RGSSEval = (int (*)(void))GetProcAddress(hModule, "RGSSEval");
  4. *RGSSEval("a = A.new; a.fn");
复制代码
然后 RM 脚本中:

  1. class A
  2.   def fn
  3.     p "hola mundo"
  4.   end
  5. end
  6. MyDLLFn = Win32API.new( ... )
  7. MyDLLFn.call                                    # => "hola mundo"
复制代码
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
61 小时
注册时间
2006-9-15
帖子
946
5
 楼主| 发表于 2009-10-23 17:55:10 | 只看该作者
谢谢,十分感谢!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
61 小时
注册时间
2006-9-15
帖子
946
6
 楼主| 发表于 2009-10-23 18:00:10 | 只看该作者
本帖最后由 secondsen 于 2009-10-23 20:03 编辑

那如果

我之前定义了一个方法

def eval(string)
  p string
end

那么用这个方法的话。。。就会执行我定义的def eval(string)么???

我用的是别人的电脑自己没有办法做实验,只好来问问题了。。。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
7
发表于 2009-10-24 07:21:55 | 只看该作者
嗯,你给 RGSSEval 传递的是一个 LPTCSTR,在这个字符串里面你可以尽情地写下 Ruby 脚本
回复 支持 反对

使用道具 举报

Lv1.梦旅人

炎发灼眼的讨伐者

梦石
0
星屑
50
在线时间
1707 小时
注册时间
2007-8-4
帖子
904
8
发表于 2009-10-27 08:20:24 | 只看该作者
紫苏小问题:int (*RGSSEval)(void);不能接受参数。。
RMXP&RMVX通用Web化完成- -|||
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-12 06:01

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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