[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