创建调用其他 Lua 函数的 C++ 函数

Creating a C++ function that calls other Lua function

我想知道是否可以创建一个以 Lua 函数作为参数来调用它的 C++ 函数。

例如 Lua,

function sub()
  print('I am sub function')
end

function main()
  callfunc(sub) //C++ function that takes a function variable to call 
end

是否可以在 C++ 中创建 callfunc() 函数?

顺便说一句,我正在使用 SWIG。

您可以通过使用特殊 lua_fnptr.i header 将 Lua 解释器状态向下传递给 C++ 函数来创建回调。 header 文件还包含更多使用信息。

%module callback

%include <lua_fnptr.i>

%{
void callfunc(SWIGLUA_FN fn) {
    SWIGLUA_FN_GET(fn);
    lua_call(fn.L,0,0);
}
%}

void callfunc(SWIGLUA_FN fn);
local cb = require("callback")
function hello()
    print("Hello World!")
end
cb.callfunc(hello)
$ lua5.2 test.lua
Hello World!