如何在C lua模块中调用

为了简化问题,假设有两个Lua脚本,一个程序和一个模块,例如:

sample.lua

local sample = {}
    sample.fun1 = function()
    end;
return sample;

我在程序中使用它,像这样:

program.lua

local sample = require("sample");
sample.fun1();

现在我尝试在C中使用相同的模块(首先运行lua程序,在这里很重要),像这样:

luaL_dofile(luaState, "program.lua");
...
lua_getglobal(luaState, "sample");
lua_getfield(luaState,-1, "fun1");

luaL_dofile(luaState, "program.lua");
...
lua_getglobal(luaState, "sample.fun1");

但两个版本都会导致崩溃。我的问题在这里:是否有可能以某种方式使用之前在程序中使用的模块?对于这个例子当然是无意义的,但我的系统要复杂得多,我需要这个功能。也许可以采用其他方法来实现这个功能吗?

点赞