我有一个运行ruby代码(RGSS3,精确)的可执行文件,我还设法构建了一个包含ruby.h的DLL,它通过LoadLibraryA导入到exe。
我想问一下是否可能……
对的,这是可能的。
Ruby对象用C表示 VALUE ,这基本上是一个指针。但是,从RGSS3调用这些函数有点麻烦:你必须得到对象的内存地址( object.object_id << 1 并通过 那 到功能。
VALUE
object.object_id << 1
看一眼 这个 特别是存储库 这个 文件。它声明和导出一个可以从RPG Maker导入它的函数 Win32API 。假设你编译了 test.c 从该存储库到 test.dll :
Win32API
test.c
test.dll
# Load RGSS3 dll LoadLibrary = Win32API.new("kernel32", "LoadLibraryA", "p") rgss3_dll = LoadLibrary.call("RGSS301.dll") # Call function from your dll bitmap = Bitmap.new(32, 32) BitmapTest = Win32API.new("test.dll", "BitmapTest", "ll") p BitmapTest.call(rgss3_dll, bitmap.object_id << 1)