C代码:
// test.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <process.h>
#include <stdio.h>
extern "C" {
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
#pragma comment(lib, "lua5.1.lib")
lua_State* L;
int main ( int argc, char *argv[] )
{
/* initialize Lua */
L = lua_open();
/* load Lua base libraries */
luaL_openlibs(L);
luaL_dofile(L, "my.lua");//载入代码文件并执行
//假设里面的函数是这样的:function LuaFun(a,b) return a+b,a-b end
lua_getglobal(L, "LuaFun");
lua_pushnumber(L, 10);//压入参数1
lua_pushnumber(L, 20);//压入参数2
lua_call(L, 2, 2);//调用函数,2个参数,2个返回值
int a = luaL_checkinteger(L, 1);//第一个返回值
int b = luaL_checkinteger(L, 2);//第一个返回值
lua_pop(L, 2);//清理堆栈
printf("a:%d,b:%d\n",a,b);
/* cleanup Lua */
lua_close(L);
/* pause */
printf( "Press enter to exit..." );
system("pause");
return 0;
}
my.lua
function
LuaFun(a,b)
return a+b,a-b
end