quick lua-binding使用详解

来源:互联网 发布:pkpm软件下载 编辑:程序博客网 时间:2024/06/02 02:20

1 创建c++文件 MyClass.cpp MyClass.h 于 frameworks/runtime-src/Classes/tolua目录下
MyClass.cpp

#include "MyClass.h"int MyClass::foo(int i){  return i + 100;}

MyClass.h

#include "cocos2d.h"using namespace cocos2d;class MyClass : public Ref{public:  MyClass()   {};  ~MyClass()  {};  bool init() { return true; };  CREATE_FUNC(MyClass);  int foo(int i);};

2 编写.ini文件。在frameworks/cocos2d-x/tools/tolua/目录下能看到genbindings.py脚本和一大堆.ini文件,这些就是bindings-generator的实际执行环境了。随便找一个内容比较少的.ini文件,复制一份,重新命名为MyClass.ini。大部分内容都可以凑合不需要改,这里仅列出必须要改的重要部分:

[MyClass]prefix           = MyClasstarget_namespace = myheaders          = %(cocosdir)s/../runtime-src/Classes/tolua/MyClass.hclasses          = MyClass

3 修改genbindings.py文件 129行附近,将MyClass.ini文件加进去:

frameworks/cocos2d-x/tools/tolua/genbindings.py

cmd_args = {'cocos2dx.ini' : ('cocos2d-x', 'lua_cocos2dx_auto'), \            'MyClass.ini' : ('MyClass', 'lua_MyClass_auto'), \            ...

4 在控制台进入frameworks/cocos2d-x/tools/tolua/ 目录 ,运行genbindings.py
会在framework/cocos2d-x/cocos/scripting\lua-bindings\auto 目录下生成lua_MyClass_auto.cpp和lua_MyClass_auto.hpp两个文件将其复制到Classes/tolua目录下

5 修改AppDelegate.cpp

#include "../tolua/lua_MyClass_auto.hpp"applicationDidFinishLaunching()函数中添加    LuaStack* stack1 = engine->getLuaStack();    register_all_MyClass(stack1->getLuaState());

6测试 在main.lua文件中

local test = my.MyClass:create()print("lua bind: " .. test:foo(99)

已解决出现的问题
1.python缺少yaml库Cheetah库 安装easy_install 安装相应的库
2.python :ImportError …MAXREPEAT 提示
修改Python27\Lib下src_constants.py如下

MAGIC = 20031017try:        from _sre import MAXREPEATexcept ImportError:    import _sre    _sre.MAXREPEAT = 65535# SRE standard exception (access as sre.error)# should this really be here?class error(Exception):    pass

这样使用vs2012可以启动win程序但是如果使用Cocos Code Ide 的话要修改Android.mk文件将MyClass.cpp、lua_MyClass_auto.cpp添加到LOCAL_SRC_FILES :下

参考:http://segmentfault.com/blog/hongliang/1190000000631630

0 0
原创粉丝点击