Project1
标题:
可以dll调用类的方法么
[打印本页]
作者:
secondsen
时间:
2009-10-21 14:12
标题:
可以dll调用类的方法么
RT
把一个类作参数传给Dll,dll可以调用此类的方法
这有办法实现么
作者:
紫苏
时间:
2009-10-22 02:54
本帖最后由 紫苏 于 2009-10-22 03:00 编辑
你在 DLL 映射到 RM 进程地址空间后中,再加载一下 RGSS****.DLL(system32 下的那个),然后调用其中的 RGSSEval 函数即可动态解释 RM 的脚本了,前提是类已经建立了
作者:
secondsen
时间:
2009-10-23 09:25
这个。。。不太明白。。。
作者:
紫苏
时间:
2009-10-23 09:54
本帖最后由 紫苏 于 2009-10-23 09:55 编辑
比如你在你的的 DLL 导出函数中这样写:
HMODULE hModule = LoadLibrary("RGSS****.dll");
int (*RGSSEval)(void);
RGSSEval = (int (*)(void))GetProcAddress(hModule, "RGSSEval");
*RGSSEval("a = A.new; a.fn");
复制代码
然后 RM 脚本中:
class A
def fn
p "hola mundo"
end
end
MyDLLFn = Win32API.new( ... )
MyDLLFn.call # => "hola mundo"
复制代码
作者:
secondsen
时间:
2009-10-23 17:55
谢谢,十分感谢!
作者:
secondsen
时间:
2009-10-23 18:00
本帖最后由 secondsen 于 2009-10-23 20:03 编辑
那如果
我之前定义了一个方法
def eval(string)
p string
end
那么用这个方法的话。。。就会执行我定义的def eval(string)么???
我用的是别人的电脑自己没有办法做实验,只好来问问题了。。。
作者:
紫苏
时间:
2009-10-24 07:21
嗯,你给 RGSSEval 传递的是一个 LPTCSTR,在这个字符串里面你可以尽情地写下 Ruby 脚本
作者:
灼眼的夏娜
时间:
2009-10-27 08:20
紫苏小问题:int (*RGSSEval)(void);不能接受参数。。
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1