C++与Lua通信

5 篇文章 0 订阅

参考文章地址:

1.Lua与C++通信原理说明:http://blog.csdn.net/musicvs/article/details/8440707

2.Lua中的堆栈:http://blog.csdn.net/musicvs/article/details/8445027

3.Lua与C++通信Demo:http://blog.csdn.net/musicvs/article/details/8440919


引入lua库头文件

//引入lua库,由于lua是用C语言实现的,所以需要添加extern "C"
EXTERN_C{
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}


编写lua脚本

在Resource/script目录下创建一个communication.lua文件,文件内容如下:
data = "this is a string in lua"

C++获取lua中的字符串

	//初始化Lua对象
	lua_State* L = lua_open();

	/***********	获取Lua中的字符串	************/
	//加载并运行lua文件
	luaL_dofile(L,"script/communication.lua");
	//重置栈顶索引为0,相当于清空堆栈,下一个元素入栈时索引位置为-1,再下一个入栈的也是-1,上一个就变成-2了,所谓压栈
	lua_settop(L,0);
	//对lua全局表中的data变量执行入栈操作
	lua_getglobal(L,"data");
	//判断栈顶元素是不是一个字符串,返回非0表示是一个字符串
	int isString = lua_isstring(L,-1);
	//获取栈顶元素并转换为字符串
	const char* data = lua_tostring(L,-1);
	if (isString)
	{
		CCLOG("lua statck index -1 element is string");
	}else{
		CCLOG("lua statck index -1 element is not string");
	}
	CCLOG("lua statck index -1 element value=%s",data);

	//释放内存
	lua_close(L);
运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值