C++调用lua例子

来源:互联网 发布:淘宝卖茶叶有什么要求 编辑:程序博客网 时间:2024/05/16 18:02

[huangxw3@ubuntu]$cat add.lua

function add ( x, y )   

       return x + y

end

[huangxw3@ubuntu]$cat main.cpp

#include <stdio.h>

#include <iostream>

 

extern "C"{

#include "lua.h"

#include "lualib.h"

#include "lauxlib.h"

}

using namespace std ;

lua_State * L;

int luaadd (int x,int y)

{

   int sum;

   //函数名

   lua_getglobal(L, "add");

   //参数压栈

   lua_pushnumber(L, y);

   lua_pushnumber(L, x);

   //调用函数

   lua_call(L, 2, 1);

   //得到返回值

   sum = (int)lua_tonumber(L, -1);

   lua_pop(L, 1);

   return sum;

}

int main ( int argc, char *argv[] )

{

   int sum;

   int error ;

   //创建一个指向Lua解释器的指针。

   try

    {

       L = lua_open();

       luaopen_base(L); // 加载Lua基本库

       //函数加载Lua

       luaL_openlibs(L);

       //加载脚本

        error =luaL_dofile(L,"add.lua");

       //调用函数

       sum = luaadd( 10, 11);

       // print the result

       printf( "The sum is %d\n", sum );

       getchar(); // console程序调试技巧,方便观察结果

       //关闭释放资源  

       lua_close(L);

    }

   catch(...)

    {

       cout <<"lua err!"<< endl;

    }

   return 0;

}

 

[huangxw3@ubuntu]$ g++ main.cpp -llua –ldl–o main

[huangxw3@ubuntu]$./main

The sum is 21