Да, это возможно.
Объекты Ruby представлены в C с VALUE
, который в основном является указателем. Однако вызывать эти функции из RGSS3 немного глупо: вам нужно получить адрес памяти объекта (object.object_id << 1
) и передать , который , в функцию.
Взгляните на этот репозиторий, в частности этот файл. Он объявляет и экспортирует функцию, которую вы можете использовать из RPG Maker, импортируя ее с 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)