C调用LUA函数的一个简单Demo

来源:互联网 发布:mac beta版 编辑:程序博客网 时间:2024/04/28 08:59

这个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) endend
二、在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;}
本人郑重声明如下一、本文来自CSDN博客,本文地址http://t.cn/z8aqfYP二、All Rights Reserved. 任何个人或网站转载本文时不得移除本声明.三、不得对文章进行修改,除非明确说明.同时欢迎大家评论转载和分享.