まず、必要な DLL をロードします。
local ffi = require("ffi")
local theDLL = ffi.load("thisDLL")
ffi cdefには、2種類の構造体があります
ffi.cdef [[
typedef struct StructSession StructSession;
typedef struct {
/*
* begin_proj callback
*/
bool (__cdecl *begin_proj)(char *proj);
/*
* save_proj_state
*/
bool (__cdecl *save_proj_state)(unsigned char **buffer, int *len);
} StructCallbacks;
私はcdefにもこの機能を持っています
__declspec(dllexport) int __cdecl start_session(StructSession **session,
StructCallbacks *cb);
今、私はこの関数を呼び出したいと思います
print(theDLL.start_session(a,b))
vars a と b は明らかにプレースホルダーです。問題は、関数が必要とする構造体をどのように渡すことができるかということです。そして、StructSession が機能するようになったとします。LuaJIT 内の関数へのコールバックを StructCallbacks で行うことさえ可能でしょうか?