C++与Lua通信
参考文章地址:
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);
运行结果:
posted on 2014-07-10 15:54 linchaolong 阅读(423) 评论(0) 编辑 收藏 举报