C++与Lua通信

来源:互联网 发布:zara淘宝官方旗舰店 编辑:程序博客网 时间:2024/05/29 13:49

参考文章地址:

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);
运行结果:

0 0