我想知道是否可以创建一个 C++ 函数,以 Lua 函数作为参数来调用它。
例如在 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
将 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!
关于c++ - 创建一个调用其他 Lua 函数的 C++ 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51145432/