如何从 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