摘要: 如果你看了LUA的文档,那么就应该很清楚LUA与C交互数据时都是用到LUA中所谓的stack。那么当我调用lua_open函数之后栈是什么样的呢?空的(luaopen_base等会往栈上加进一些东西)。那么至于如何操作栈上的数据,我想官方文档上已经说得很清楚了,不过最初我对于栈的顺序有一些迷糊,所以就说说这个。现在假如我有如下的一段代码:代码:lua_State* L = lua_open();lua_pushnumber( L, 211 );lua_pushnumber( L, 2222 );lua_newtable( L );lua_close( L );那么当执行完lua_newtabl 阅读全文
posted @ 2013-12-16 16:58 健忘猪 阅读(6411) 评论(2) 推荐(0) 编辑
摘要: ——本文一个例子展开,介绍Linux下面线程的操作、多线程的同步和互斥。前言线程?为什么有了进程还需要线程呢,他们有什么区别?使用线程有什么优势呢?还有多线程编程的一些细节问题,如线程之间怎样同步、互斥,这些东西将在本文中介绍。我在某QQ群里见到这样一道面试题:是否熟悉POSIX多线程编程技术?如熟悉,编写程序完成如下功能:1)有一int型全局变量g_Flag初始值为0;2) 在主线称中起动线程1,打印“this is thread1”,并将g_Flag设置为13) 在主线称中启动线程2,打印“this is thread2”,并将g_Flag设置为24) 线程序1需要在线程2退出后才能退出5 阅读全文
posted @ 2013-12-16 15:50 健忘猪 阅读(495) 评论(1) 推荐(0) 编辑
摘要: 项目正在使用cocos2dx的lua绑定,绑定的方式是tolua++。对大规模使用lua代码信心不是很足,花了一些时间阅读tolua++的代码,希望对绑定实现的了解,有助于项目对lua代码的把控。从阅读结果上来看,起码在内存管理上,帮助还是很大的。1.tolua++如何将c++对象导入到lua里tolua++为每一个传入lua的对象建立一个userdata,userdata的值,是c++对象的地址。userdata的metatable,是一个tolua++建立的,记录了userdata对应c++类型信息的表格,包括导出的成员变量、成员函数等信息。对于成员变量的读取赋值,tolua++是在met 阅读全文
posted @ 2013-12-16 15:49 健忘猪 阅读(1846) 评论(0) 推荐(0) 编辑
摘要: 一、cocos2dx对tolua++绑定的修正A.c对lua回调函数的引用在使用cocos2dx编写游戏时,我们经常会设置一些回调函数(时钟、菜单选择等)。如果采用脚本方式编写游戏的话,这些回调函数也是需要写在脚本里的。实现这个功能,就需要lua将自己的函数传递给c++,c++保持对这个函数的引用,不要让这个lua函数被垃圾回收,并在适当的时候回调这个lua函数。这种需求的一般抽象是在C环境下保存lua状态,在PIL(Programming In Lua)里有比较详尽的描述。可以使用luaL_ref函数,将一个luaValue(function、table等没有直接对应c类型的数据)存储到LU 阅读全文
posted @ 2013-12-16 15:41 健忘猪 阅读(2298) 评论(0) 推荐(0) 编辑
摘要: 一、下载cocos2d-xhttp://cocos2d-x.org/projects/cocos2d-x/wiki/Downloadcocos2d-x-2.1.4.zip @ June.18, 2013我们可以看到最新版本的2.1.4,这个版本提供了一个用python命令来建立各平台的项目,十分便利下载,解压(建议解压到主目录下的)二、下载pythonhttp://www.python.org/getit/建议选择2.7.5版本的下载Python 2.7.5 Mac OS X 64-bit/32-bit x86-64/i386 InstallerPython 2.7.5 Mac OS X 32 阅读全文
posted @ 2013-12-16 14:36 健忘猪 阅读(763) 评论(0) 推荐(0) 编辑
摘要: 导出 C/C++ API 给 Lua 使用cocos2d-x 和 quick-cocos2d-x 的底层代码都是使用 C++ 语言开发的。为了使用 Lua 脚本语言进行开发,我们利用tolua++工具,将大量的 C/C++ API 导出到了 Lua 中。使用 tolua++ 的基本步骤:从 C/C++ 源代码复制头文件的内容到 .tolua(tolua++ 文档中称为 .pkg)文件中。修改 .tolua 文件内容,去掉 tolua++ 无法识别的内容,以及不需要导出到 Lua 的定义。运行 tolua++ 工具,根据 .tolua 文件生成 luabinding 接口文件(由 .cpp 文件 阅读全文
posted @ 2013-12-16 11:51 健忘猪 阅读(2483) 评论(0) 推荐(0) 编辑