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

这个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. 任何个人或网站转载本文时不得移除本声明. 三、不得对文章进行修改,除非明确说明.同时欢迎大家评论转载和分享.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值