简单的c++调用lua详解

来源:互联网 发布:涉密网络保密检查标准 编辑:程序博客网 时间:2024/05/22 01:26

[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