这个Demo是帮助初学者了解C++是如何调用LUA的函数的.
一、我的LUA文件里是一个求阶乘的函数如下:
print("Hello This is a Lua File")//仅作提示用 function Factorial(n)//求n的阶乘 if n == 0 then return 1 else return n*Factorial(n-1) end end
二、在C++中使用LUA的时候当然需要引入LUA相关的头文件
extern "C"//以C的方式来编译 { #include "lua.h" #include "lualib.h" #include "lauxlib.h" };
三、主程序如下.结合注释和栈示意图应该不难理解.故不多言:
int main() { lua_State* pLuaState; pLuaState = luaL_newstate(); luaL_openlibs(pLuaState); if (luaL_dofile(pLuaState,"Fuc.lua") != 0) { std::cout<<"Load Lua File Error"<<std::endl; } lua_getglobal(pLuaState,"Factorial"); //把Factorial函数放入栈中 lua_pushnumber(pLuaState,5); //将Factorial函数需要的参数压栈 lua_call(pLuaState,1,1); //调用函数.第二个参数表示函数的参数个数.第三个参数表示函数返回值的个数 int iResult = lua_tonumber(pLuaState,-1);//获取函数返回值 std::cout<<iResult<<std::endl; //120 lua_close(pLuaState); return 0;}