cocos2dx 3.0 开荒笔记 ---- 3.0的lua绑定
2014-05-20 17:32
323 查看
研究3.0也有一段时间了,从RC0出来开始就不断研究,发现变化还是不少,并且遇到不少的问题。如今正试着做一个基于3.0的游戏项目,遇到各种坑爹的问题,如果不用博客记录下来,很有可能下次再遇到的时候就会记不起来怎么回事了,于是乎笔者就兴致勃勃地来记笔记了。
关于用3.0创建项目之类的,网上已经有很多相关的教程了,这里就不再赘述。另外笔者目前是在win32平台下做测试,所以可能在其他平台会有什么疏漏的地方也许会略过,到时候还请多多包涵了。
3.0刚出来的时候,我就兴致勃勃地写了一套简单的框架,准备绑定到lua中使用,后来发现3.0绑定lua的方式完全变了,网上也找不到什么资料,于是乎果断去阅读了一些readme类似的东西,在cocos2d-x/tools/tolua的目录下 有一个README.mdown,用记事本打开后,里面简单讲解了3.0绑定lua的过程(也太简单了吧。。),先贴出来再说。
由于笔者是在windows下绑定的。所以来看on Windows这一块。
3.0里面是通过一个.ini的文件来设置绑定哪些内容的,tolua的目录下有很多cocos2dx的ini文件,可以自己打开记事本瞅瞅,相当复杂,不过没关系,我们来看看绑定的整个过程。
先参考一篇大牛的文章,这里给出传送门:http://www.cocoachina.com/bbs/read.php?tid=196416
假设我们已经按照大牛给出的方法,绑定了之后如果出错了,那么这里再给出一篇大牛的文章:http://www.cocoachina.com/bbs/read.php?tid=196037
一般来说,遇到的问题都能从以上两篇文章里面得到解决,但是。。。笔者还遇到了其他坑爹的问题,这里记录一下
1. 首先看下这张图
![](https://img-blog.csdn.net/20140520171801046)
我想应该会有人遇到过一样的问题,但是这里我要说下,这些提示不会影响到你的绑定过程,就算绑定失败,也和这些东西没有关系,笔者还曾经为了这些警告纠结了很久。
2. 不知道有没有人遇到过出现Permission denied(中文系统应该是提示:访问被拒绝)的错误,这个错误也是我郁闷了最久的原因,于是乎我就在python脚本里面一步一步打log,最终发现错误是在这里。
后来发现dos2unix这个命令,在windows下一直报错,我发现导出的目录下有个叫lua的文件夹,这样的话dos2unix *所有文件会出错。原因不明,如果没有文件夹就没有问题,反正也就生成了两个文件,.hpp和.cpp,分别执行dos2unix命令就好了,改成以下格式
里面的lua_framework_auto是我生成的文件的名字,改成你们自己的名字就行了,接下来只要出现success,说明绑定就成功了,开始你的3.0 lua之旅吧
另外说一下,cocos2dx提供的自动绑定不支持模板类的绑定,包括模板类参数等等,所以很多用到Vector或者std::function的api都绑定不上去的,至于如何绑定自定义的事件,有空我会在以后的博文中阐述的。
关于用3.0创建项目之类的,网上已经有很多相关的教程了,这里就不再赘述。另外笔者目前是在win32平台下做测试,所以可能在其他平台会有什么疏漏的地方也许会略过,到时候还请多多包涵了。
3.0刚出来的时候,我就兴致勃勃地写了一套简单的框架,准备绑定到lua中使用,后来发现3.0绑定lua的方式完全变了,网上也找不到什么资料,于是乎果断去阅读了一些readme类似的东西,在cocos2d-x/tools/tolua的目录下 有一个README.mdown,用记事本打开后,里面简单讲解了3.0绑定lua的过程(也太简单了吧。。),先贴出来再说。
How to Use bindings-generator ================== On Windows: ------------ * Make sure that you have installed `android-ndk-r9b`. * Download python2.7.3 (32bit) from (http://www.python.org/ftp/python/2.7.3/python-2.7.3.msi). * Add the installed path of python (e.g. C:\Python27) to windows environment variable named 'PATH'. * Download pyyaml from http://pyyaml.org/download/pyyaml/PyYAML-3.10.win32-py2.7.exe and install it. * Download pyCheetah from https://raw.github.com/dumganhar/cocos2d-x/download/downloads/Cheetah.zip, unzip it to "C:\Python27\Lib\site-packages" * Set environment variables (`NDK_ROOT`) * Go to "cocos2d-x/tools/tolua" folder, and run "genbindings.py". The generated codes will be under "cocos\scripting\auto-generated\js-bindings". On MAC: ---------- * The OSX 10.9 has a built-in python2.7 and if your os don't have python2.7 then use [Homebrew](http://brew.sh/) to install the python and use pip install the python dependencies. <pre> brew install python </pre> * Install python dependices by pip. <pre> sudo easy_install pip sudo pip install PyYAML sudo pip install Cheetah </pre> * Download [64bit ndk-r9b-x86_64](http://dl.google.com/android/ndk/android-ndk-r9b-darwin-x86_64.tar.bz2) from [google](http://developer.android.com/tools/sdk/ndk/index.html) * Run <pre> export NDK_ROOT=/path/to/android-ndk-r9b ./genbindings.py </pre> On Ubuntu Linux 12.04 64bit ------------ * Install python <pre> sudo apt-get install python2.7 </pre> * Install python dependices by pip. <pre> sudo apt-get install python-pip sudo pip install PyYAML sudo pip install Cheetah </pre> * Download [64bit ndk-r9b-x86_64]( https://dl.google.com/android/ndk/android-ndk-r9b-linux-x86_64.tar.bz2) from [google](http://developer.android.com/tools/sdk/ndk/index.html) * Go to "cocos2d-x/tools/tolua", Run <pre> export NDK_ROOT=/path/to/android-ndk-r9b ./genbindings.py </pre>
由于笔者是在windows下绑定的。所以来看on Windows这一块。
* Make sure that you have installed `android-ndk-r9b`.好吧,经过几番折腾,首先貌似必须要是r9b版本才行,最新的r9d貌似是不行的,相关下载请自行百度。32位和64位的不知道有没有影响,反正笔者用的是32位的
* Download python2.7.3 (32bit) from (http://www.python.org/ftp/python/2.7.3/python-2.7.3.msi).2.7.3,我怎么记得之前是2.7.5,2.7.5也是没啥问题的。
* Add the installed path of python (e.g. C:\Python27) to windows environment variable named 'PATH'.把python加入环境变量,是为了能在cmd执行python命令
* Download pyyaml from http://pyyaml.org/download/pyyaml/PyYAML-3.10.win32-py2.7.exe and install it.下载安装 不多说了
* Download pyCheetah from https://raw.github.com/dumganhar/cocos2d-x/download/downloads/Cheetah.zip, unzip it to "C:\Python27\Lib\site-packages"下载解压 不多说了
* Set environment variables (`NDK_ROOT`)把ndk-r9b的目录加入环境变量中,并且命名为NDK_ROOT,记得必须是这个名字!
* Go to "cocos2d-x/tools/tolua" folder, and run "genbindings.py". The generated codes will be under "cocos\scripting\auto-generated\js-bindings".这一步是说得灰常简单,但是笔者整整搞了N天的东西。genbindings.py是绑定cocos2dx自带的api的python脚本。当然笔者需要绑定的是自己写的一套简单的框架,所以当然要自己配置ini文件,还有修改python脚本咯。
3.0里面是通过一个.ini的文件来设置绑定哪些内容的,tolua的目录下有很多cocos2dx的ini文件,可以自己打开记事本瞅瞅,相当复杂,不过没关系,我们来看看绑定的整个过程。
先参考一篇大牛的文章,这里给出传送门:http://www.cocoachina.com/bbs/read.php?tid=196416
假设我们已经按照大牛给出的方法,绑定了之后如果出错了,那么这里再给出一篇大牛的文章:http://www.cocoachina.com/bbs/read.php?tid=196037
一般来说,遇到的问题都能从以上两篇文章里面得到解决,但是。。。笔者还遇到了其他坑爹的问题,这里记录一下
1. 首先看下这张图
我想应该会有人遇到过一样的问题,但是这里我要说下,这些提示不会影响到你的绑定过程,就算绑定失败,也和这些东西没有关系,笔者还曾经为了这些警告纠结了很久。
2. 不知道有没有人遇到过出现Permission denied(中文系统应该是提示:访问被拒绝)的错误,这个错误也是我郁闷了最久的原因,于是乎我就在python脚本里面一步一步打log,最终发现错误是在这里。
if platform == 'win32': with _pushd(output_dir): _run_cmd('dos2unix *')
后来发现dos2unix这个命令,在windows下一直报错,我发现导出的目录下有个叫lua的文件夹,这样的话dos2unix *所有文件会出错。原因不明,如果没有文件夹就没有问题,反正也就生成了两个文件,.hpp和.cpp,分别执行dos2unix命令就好了,改成以下格式
if platform == 'win32': with _pushd(output_dir): _run_cmd('dos2unix lua_framework_auto.hpp') _run_cmd('dos2unix lua_framework_auto.cpp')
里面的lua_framework_auto是我生成的文件的名字,改成你们自己的名字就行了,接下来只要出现success,说明绑定就成功了,开始你的3.0 lua之旅吧
另外说一下,cocos2dx提供的自动绑定不支持模板类的绑定,包括模板类参数等等,所以很多用到Vector或者std::function的api都绑定不上去的,至于如何绑定自定义的事件,有空我会在以后的博文中阐述的。
相关文章推荐
- 2------Cocos2dx2.0__3.0 lua绑定C++自定义类方法总结
- 关于cocos2dx 3.0+ 的 lua绑定c++
- cocos2dx lua学习笔记 <一> quick 3.5把自定义C++类绑定到lua
- 1------Cocos2dx3.0 Lua 初步绑定
- cocos2dx3.0 lua项目创建cpp文件时候不能导入extensions头文件时无法使用或报错
- 在cocos2dx3.0 lua教程 自己写的类连接lua 使lua能调用自己类的函数
- cocos2dx-lua绑定之代码编辑器
- cocos2dx3.0下sqlite的C++与lua绑定
- cocos2dx-lua绑定之代码编辑器
- cocos2dx的lua绑定 【转】
- cocos2dx3.0-lua获取cocosstudio场景以及获取ui等控件
- cocos2dx lua binding ,cocos2dx 绑定lua测试
- cocos2dx3.1 lua绑定C++类
- cocos2d-x3.0 编译android出现的问题笔记 cocos2dx3.0 Android.mk No rule to make target
- cocos2dx 3.0 研究(5) lua之前奏
- cocos2dx-lua绑定之代码编辑器
- cocos2dx的lua绑定
- cocos2dx之lua绑定简析
- cocos2d-x学习笔记1:cocos2dx 3.0 安装及项目创建
- cocos2dx 3.0学习笔记(一):Win32下-cocos2dx-3.0环境配置和创建项目