这个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;
}