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