lua5.1.5 c++交互

#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所以才支持中文命名函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值