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

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

2014年01月30日 ⁄ 综合 ⁄ 共 1065字 ⁄ 字号 评论关闭

这个Demo是帮助初学者了解LUA是如何调用C++/C的函数的.LUA调用的C++中类的函数必须是静态函数方可.

一、我的LUA文件很简单就是调用一个已经注册的C++函数如下:

print("Hello, This is a Lua File.")
iResult = getValueFromCFunc(5)//调用注册的C++函数
print("5*4*3*2*1=",iResult)   //打印结果

二、代码很简单.理解起来也应该不是很难,故在此不多言.

extern "C"
{
 #include "lua.h"
 #include "lualib.h"
 #include "lauxlib.h"
};
/***************************************************************/
int Factorial(int n)
{
 if (n == 0)
 {
  return 1;
 } 
 else
 {
  return n*Factorial(n-1);
 }
}
/***************************************************************/
int getValueFromCFunc(lua_State* pL)
{
 int num = (int)lua_tonumber(pL,1); //从栈顶中取一个值  
 lua_pushnumber(pL,Factorial(num)); //调用Factorial函数将返回值入栈  
 return 1;                          //1表示返回值个数
} 
/***************************************************************/
int main()
{
 lua_State* pLuaState;
 pLuaState = luaL_newstate();
 luaL_openlibs(pLuaState);
 lua_register(pLuaState,"getValueFromCFunc", getValueFromCFunc);
 if (luaL_dofile(pLuaState,"Fuc.lua") != 0)
 {
  std::cout<<"Load Lua File Error"<<std::endl;
 }
 lua_close(pLuaState);
 return 0;
}
本人郑重声明如下 一、本文来自CSDN博客,本文地址http://t.cn/z8achwq 二、All Rights Reserved. 任何个人或网站转载本文时不得移除本声明. 三、不得对文章进行修改,除非明确说明.同时欢迎大家评论转载和分享.

抱歉!评论已关闭.