C++ 调用lua函数问题。

2025-05-19 16:42:28
推荐回答(4个)
回答1:

1、你是不是要对创建出来的虚拟机调用luaL_openlibs一下?
2、啥叫加载lua模块……送一个包含加载模块的lua语句的字符串到虚拟机里面跑一下是不是能解决
3、我也觉得可以直接调用函数啊,详细说一下“行不通”是什么情况。因为我以前写的东西就是加载一次脚本,然后就一直调用里面的函数了,没遇到问题……

回答2:

不懂你在说什么,为什么调用模块方法会失败,你怎么导入的模块,给点代码比说一堆话都好解释

另外,已经存在的函数,不需要加载什么文件就能一直用,完全不懂你在搞什么

回答3:

还好 还好

回答4:

虽然过了很长时间了,但是最近我也在找怎么能解决这个问题。
最后我看到了Lua源码中一个函数是这么写的,应该是可以的。总体上说,就是模块会作为一个Table存放在_G中。所以,先获取这个模块,再在模块中搜索函数,然后就push参数调用。
static int traceback (lua_State *L) {
lua_getfield(L, LUA_GLOBALSINDEX, "debug");
if (!lua_istable(L, -1)) {
lua_pop(L, 1);
return 1;
}
lua_getfield(L, -1, "traceback");
if (!lua_isfunction(L, -1)) {
lua_pop(L, 2);
return 1;
}
lua_pushvalue(L, 1); /* pass error message */
lua_pushinteger(L, 2); /* skip this function and traceback */
lua_call(L, 2, 1); /* call debug.traceback */
return 1;
}