C++调用lua例子

[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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值