本文收集了网上的资料,作为 lua 的入门砖。
使用的vc6的windows 控制台程序。需要的库是 lua5.1.lib,将lua5.1源程序中头文件和库文件都放在工程目录下。
#include "stdafx.h"
extern "C"
{
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
lua_State * L;
int fun1(lua_State *L)
{
printf("function from cpp!\n");
return 0;
}
int luaadd ( int x, int y )
{
int sum;
//函数名
lua_getglobal(L, "add");
//第一个参数压栈
lua_pushnumber(L, x);
//第二个参数压栈
lua_pushnumber(L, y);
//调用函数
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;
//创建一个指向Lua解释器的指针。
L = lua_open();
lua_pushcfunction(L, fun1);
lua_setglobal(L, "fun1"); //添加注册c的fun1函数
//函数加载Lua库
luaL_openlibs(L);
//加载脚本
luaL_dofile(L,"add.lua");
//调用函数
sum = luaadd( 10, 11);
// print the result
printf( "The sum is %d\n", sum );
//关闭 释放资源
lua_close(L);
return 0;
}
add.lua
function add ( x, y )
fun1 "lua"
return x + y
end
运行即可。