如何从 C 调用 Lua 函数?
从C调用Lua函数需要一系列的步骤和对Lua库函数的掌握。Lua提供了几个库函数,当我们想从C或相反的地方调用Lua函数时,我们可以使用它们。
从C调用Lua函数的一些最常用的Lua库函数是-
luaL_dofile(L,"myFile.lua");
lua_getglobal(L,"添加");
lua_pushnumber(L,a);
以及更多。
当我们从C调用Lua函数时,我们将使用这些函数。
第一步是关闭Lua解释器,为此我们需要用C编写代码。
示例
考虑下面显示的例子-
extern "C" { #include "lua.h" #include "lualib.h" #include "lauxlib.h" } int main(int argc, char *argv[]) { lua_State* L; L = luaL_newstate(); luaL_openlibs(L); lua_close(L); printf( "按回车退出..." ); getchar(); return 0; }
现在,我们只需要调用luaL_dofile(L,"myFile.lua");我们将在其中编写一些将从C代码调用的Lua代码的文件的函数。
考虑下面显示的代码,写在myFile.lua-
add = function(a,b) return a + b end
现在将调用上述Lua函数的C文件看起来像这样-
int luaAdd(lua_State* L, int a, int b) { //将add函数压入lua栈顶 lua_getglobal(L, "add"); //将第一个参数压入lua栈顶 lua_pushnumber(L, a); //将第二个参数压入lua栈顶 lua_pushnumber(L, b); //使用2个参数调用函数,返回1个结果 lua_call(L, 2, 1); //得到结果 int sum = (int)lua_tointeger(L, -1); lua_pop(L, 1); return sum; }
当我们luaAdd()在C中调用这个函数时,输出将是:(对于a=2,b=3)
5