Технология полностью не отточена. Если не гонять огромные строки - скорость приличная + большинство удобств .Net.
В приложенном архиве - демонстрационный проект (VS2017 Community, .Net 4.5).
Для создания нового проекта :
1)
Ознакомиться, установить.2)
Когда откроется GUI, выставить галочки как на скринах.Далее смотрим туториалы расположенный там же. Требуется добавить конфигурации сборки. Для пилота надо x86.
Скрипт
Код
--lua
log("clear")
local ffi = require("ffi")
local sharp_plugin = ffi.load("csharp_plugin.dll")
ffi.cdef[[
typedef struct RGBStruct { int R, G, B; } rgb_s;
__cdecl const char* hello(const char* arg);
__cdecl rgb_s* rgb(int r, int g, int b);
__cdecl int mymul(int argc, ...);
__cdecl void fill(int cnt, int* buffer);
]]
--Struct test
local rgbRet = sharp_plugin.rgb(4, 1, 213)
log(rgbRet.R)
log(rgbRet.G)
log(rgbRet.B)
--String test
log(ffi.string(sharp_plugin.hello("Ivan")))
--Vargs test
local arr = {}
for i=0, 2 do
arr[i] = 2
end
log(sharp_plugin.mymul(3, ffi.new("int[3]", arr)))
--Out arg test
local data = ffi.new("int[32]")
sharp_plugin.fill(32, data)
for i=0, 31 do
log(data[i])
end
Поправляйте.