#include "stdafx.h"
#pragma comment(lib,"lua5.1.5.lib")
extern "C"
{
#include <lua.h>
#include <lualib.h>
#include <lauxlib.h>
#include <stdlib.h>
}
extern "C" int add(lua_State *Ls)
{
//获取参数数量
int num = lua_gettop(Ls);//获取栈顶索引值可以参数数量
printf("参数数量:%d\r\n",num);
int Ref = 0;
for (int i = 1; i <= num; i++) {
Ref += lua_tointeger(Ls, i);
}
//把返回值压入堆栈
lua_pushinteger(Ls,Ref);
lua_pushinteger(Ls, 1111);
lua_pushinteger(Ls, 2222);
return 3;//返回参数的个数
}
int main()
{
//创建lua环境
lua_State *L= luaL_newstate();
//打开lua所有库支持
luaL_openlibs(L);
//注册Lua函数
lua_register(L,"累加测试", add);
//调用lua函数
//先把函数压入堆栈
lua_getglobal(L,"累加测试");
//再把参数压栈
lua_pushinteger(L, 1);
lua_pushinteger(L, 2);
lua_pushinteger(L, 3);
lua_pushinteger(L, 4);
lua_pushinteger(L, 5);
//调用函数
lua_call(L, 5, 3);//参数2是传入的参数个数,参数3是返回值个数
//获取返回值
int aa1 = lua_tointeger(L, 1);
int aa2 = lua_tointeger(L, 2);
int aa3 = lua_tointeger(L, 3);
printf("返回值:%d %d %d\r\n",aa1, aa2, aa3);
//关闭lua
lua_close(L);
system("pause");
return 0;
}
我用的是修改版本的lua5.1.5所以才支持中文命名函数
lua5.1.5 c++交互
最新推荐文章于 2023-01-14 11:57:29 发布