现在的位置: 首页 > 综合 > 正文

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

2014年02月16日 ⁄ 综合 ⁄ 共 853字 ⁄ 字号 评论关闭

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

抱歉!评论已关闭.