lua与C/Cpp交互与集成
2015-07-22 17:02
281 查看
在C/C++中集成lua 1、把lua.c、makefile、luac.c这几个文件删除 2、对于xcode如果出现报错的情况处理,在lua的文件夹中查看解决办法 从C/C++项目中读取lua中的变量 lua_getglobal(L, "name")--直接把数字放到栈顶 if(lua_isnumber(l, -1)) int width = (int)lua_tonumber(l, -1)--isstring和isnumber 不是帮你转化而是帮你检查是否能转化成字符串和数字 其他的都是类似的;bool string 从C/C++项目中读取lua中的函数的方式: 学习调用无参无返回值函数 学习调用有参无返回值 注意多参数的情况是先入栈的后调用 学习调用无参有返回值 返回值就在栈顶,刻意直接获取 学习调用有参又返回值 学习调用多返回值的函数 多返回值第一个返回值是-2,因为他是第一个返回然后被压入栈顶,后来又被下一个返回值压入栈顶 调用lua函数的方式 pcall函数和获取栈值的注意 lua_pcall(m_pcall,n,r,f)//n 参数的个数,r 结果的个数,f失败的返回值 lua_pcall的参数进行设置; 注意下面一般熟用的是assert()进行 读取lua中的table和遍历table lua_getglobal(l,"name") if(lua_istable(l, -1)) { } char* getFiled(lua_State*l , const char* key) { char* rlt = null lua_pushstring(L, key);--这样就可以把想要的值获取到 lua_gettable(l,-2); if(lua_isstring(l, -2)) { rlt =(char*) lua_tostring(L, -1); lua_pop(l, 1);--注意这里可以查看一个luapop的函数的参数含义就能明白了 } } 从lua中调用c函数入门: 编写一个供lua调用的函数 static int l_getName(lua_state* L) { lua_pushstring(L, "longlingxiu");-- return 1; } lua_pushcfunction(m_pLuastate, l_getName); lua_setglobal(m_pLuastate,"getMyName"); luaL_dofile(m_pLuastate,"my.lua"); lua_pcall(m_pLuastate,0,0,-1); 然后在lua中调用getMyName这个函数就可以了; 深入理解编写C函数 1.理解供lua调用函数的原理 2.熟练编写有参数的c函数的编写 3.熟练编写多返回值的c函数供lua使用 4.熟练编写返回table的函数供lua使用
相关文章推荐
- lua中的io
- lua中的string
- lua中的table库
- lua中的数学库
- lua中的私密性和单一方法实现
- lua中的继承和多继承
- lua中的面向对象
- lua中的模块
- lua中的Serialization
- lua中的table
- 一个lua文件如何调用另一个lua文件的变量?
- Lua 语言 15 分钟快速入门(转)
- 【经典BUG】exe与dll同时使用Lua的一个内存崩溃异常
- SLua 中使用 Lua 5.3 的编译工程
- c++ 使用pbc 解决lua 解析protobuf 问题
- lua笔试
- lua迭代器和仿制药for
- 编译安装lua 时 lua.c:67:31: fatal error: readline/readline.h: No such file or directory
- lua的API
- [转]LUA 学习笔记