查看: 2367|回复: 7

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

  [复制链接]
梦石
0
星屑
60
在线时间
61 小时
注册时间
2006-9-15
回帖
864
发表于 2009-10-21 14:12:56 | 显示全部楼层 |阅读模式

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

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

×
RT
把一个类作参数传给Dll,dll可以调用此类的方法
这有办法实现么
梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
回帖
1912
发表于 2009-10-22 02:54:33 | 显示全部楼层
本帖最后由 紫苏 于 2009-10-22 03:00 编辑

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

使用道具 举报

梦石
0
星屑
60
在线时间
61 小时
注册时间
2006-9-15
回帖
864
 楼主| 发表于 2009-10-23 09:25:30 | 显示全部楼层
这个。。。不太明白。。。
回复

使用道具 举报

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
回帖
1912
发表于 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"
复制代码
回复

使用道具 举报

梦石
0
星屑
60
在线时间
61 小时
注册时间
2006-9-15
回帖
864
 楼主| 发表于 2009-10-23 17:55:10 | 显示全部楼层
谢谢,十分感谢!
回复

使用道具 举报

梦石
0
星屑
60
在线时间
61 小时
注册时间
2006-9-15
回帖
864
 楼主| 发表于 2009-10-23 18:00:10 | 显示全部楼层
本帖最后由 secondsen 于 2009-10-23 20:03 编辑

那如果

我之前定义了一个方法

def eval(string)
  p string
end

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

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

使用道具 举报

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
回帖
1912
发表于 2009-10-24 07:21:55 | 显示全部楼层
嗯,你给 RGSSEval 传递的是一个 LPTCSTR,在这个字符串里面你可以尽情地写下 Ruby 脚本
回复

使用道具 举报

炎发灼眼的讨伐

梦石
0
星屑
50
在线时间
1707 小时
注册时间
2007-8-4
回帖
894
发表于 2009-10-27 08:20:24 | 显示全部楼层
紫苏小问题:int (*RGSSEval)(void);不能接受参数。。
RMXP&RMVX通用Web化完成- -|||
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部