Cocos2d-x 3.0开始使用bindings-generator来生成c++类的lua绑定。bindings-generator基于tolua++,通过配置tools/tolua中的ini文件以及运行genbindings.py就可以自动生成c++类的绑定,具体的步骤在cocos2d-x-3.4\tools\tolua\README.mdown文件中,文档说的很简单,但是这个过程中我遇到很多问题,根本无法生成,索性把python生成绑定文件的环境搬到VS里,这样就能调试,找出问题了,具体环境的搭建下面会讲到。先看下具体生成绑定文件的说明:

1.README.mdown 说明

On Windows:
------------

* Make sure that you have installed `android-ndk-r9b`.

安装android-ndk-r9b,安装好以后要添加环境变量NDK_ROOT,这个目录的上级目录中不能有空格存在, 比如说, 如果是放在program files目录下面, 后面生成.h & .cpp文件的时候会出错, 我的是:E:\soft\android-ndk-r9b_64

* Download python2.7.3 (32bit) from (http://www.python.org/ftp/python/2.7.3/python-2.7.3.msi).

安装python2.7.3

* Add the installed path of python (e.g. C:\Python27) to windows environment variable named 'PATH'.

安装好python后, 在系统环境变量的PATH中设置python所在的目录,我的是E:\soft\python2.7.3

* Download pyyaml from http://pyyaml.org/download/pyyaml/PyYAML-3.10.win32-py2.7.exe and install it.

下载并安装PyYAML
* Download pyCheetah from https://raw.github.com/dumganhar/my_old_cocos2d-x_backup/download/downloads/Cheetah.zip, unzip it to "C:\Python27\Lib\site-packages"

下载pyCheetah ,并解压到\Python27\Lib\site-packages目录
* Set environment variables (`NDK_ROOT`)

设置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".

进入cocos2d-x-3.4\tools\tolua\ ,执行genbindings.py

2.python visual studio 环境搭建

1.到http://pytools.codeplex.com/ 下载 python 在VS中的IDE插件PTVS

2.在VS中创建python 工程

3. 把cocos2d-x-3.4\tools下 bindings-generator 和 tolua 文件夹复制到python工程目录下,复制一份genbindings.py 改名为createCustomBindings.py用来调试

4.打开python工程,把刚才添加的两个文件夹包含到工程,具体操作是:在VS里点击显示所有文件,然后选中2个文件夹,右击选择包括到项目

5.右击项目选择属性,设置启动文件为 ./tolua/createCustomBindings.py

环境打好后,开始下面的调试修复工作

3.调试修复

按F5调试,接下来会有很多报错,所以就不一一列举了,直接把改好的项目拿出来

http://yunpan.cn/cJGqhpB479dAv  访问密码 a2eb

 

下载后

createCustomBindings.py中的output_dir = '%s/HappyXiYou/Classes/auto' % workdir 这个为生成文件保存的路径,改成自己的

myclass.ini中

为头文件路径和要导出的类名,要改成自己的,workdir实在程序中赋值的,自己先把代码流程看下,基本有问题的话也可以自己解决了。

主要修改了一下几个文件,具体改了啥,可以自己和3.3原来的文件对比下就可以了

关于配置文件的细节说明请参考:

http://www.cocoachina.com/bbs/read.php?tid=196416

http://cn.cocos2d-x.org/tutorial/show?id=1421

http://www.cnblogs.com/emyueguang/p/3713635.html

http://cocos2d-x.org/docs/manual/framework/native/v2/lua/lua-binding-for-custom-class/zh

生成截图:

win7系统cocos2dx 3.4 绑定自定义类到Lua的更多相关文章

  1. cocos2dx 2.x版本:简化提炼tolua++绑定自定义类到lua中使用

    cocos2dx的3.x版本已经提供了更好地绑定方式,网上有很多相关的教程,这里给一个链接:http://www.cocoachina.com/bbs/read.php?tid=196416. 由于目 ...

  2. cocos2dx lua 绑定之二:手动绑定自定义类中的函数

    cococs2dx 3.13.1 + vs2013 + win10 1.首先按照<cocos2dx lua 绑定之一:自动绑定自定义类>绑定Student类 2.在Student类中增加一 ...

  3. cocos2dx lua 绑定之一:自动绑定自定义类中的函数

    cococs2dx 3.13.1 + vs2013 + win10 1.首先定义C++类Student 在cocos2d-x\cocos文件夹下新建一个user_define的文件夹放置两个文件. 注 ...

  4. cocos2dx-3.x 导出自定义类到 lua 过程详解

    转载请注明出处:http://www.cnblogs.com/Ray1024 一.简介 最近正在学习cocos2d中的lua游戏开发,因为lua开发的热更新特性,大家开发游戏好像都会优先选择lua作为 ...

  5. 使用tolua++编译pkg,从而创建自定义类让Lua脚本使用

    步骤一:首先自定义类(这里Himi自定义类名 “MySprite”) MySprite.h 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 // //  ...

  6. cocos2dx3.0rc导出自定义类到lua的方法

    以前要导出c++类到lua,就得手动维护pkg文件,那简直就是噩梦,3.0以后就会感觉生活很轻松了. 转载请注明出处http://www.cnblogs.com/mrblue/p/3637910.ht ...

  7. cocos2dx3.0导出自定义类到lua的方法详细步骤

    我写了一个用3.0的工具导出类到lua,自动生成代码的方法. 以前要导出c++类到lua,就得手动维护pkg文件,那简直就是噩梦,3.0以后就会感觉生活很轻松了. 下面我就在说下具体做法.1.安装必要 ...

  8. cocos2d-x-lua如何导出自定义类到lua脚本环境

      这篇教程是基于你的工程是cocos2d-x-lua的项目,我假设你已经完全驾驭cocos-x/samples/Lua/HelloLua工程,基本明白lua和c++互调的一些原理. 我们的目的是要在 ...

  9. 【Quick-COCOS2D-X 3.3 怎样绑定自己定义类至Lua之三】动手绑定自己定义类至Lua

        查看[Quick-COCOS2D-X 3.3 怎样绑定自己定义类至Lua之二]新建项目中配制环境,我们完美的在新建项目中完毕了绑定须要的环境,接下来才是最关健的一步.绑定自己定义C++类至Lu ...

随机推荐

  1. [Canvas] Introduction to drawing with p5js

    In this lesson we look at using color and the basic drawing methods of p5js, and how they can be com ...

  2. sqrt 源代码

    stap -v -e 'probe process("/usr/local/mysql56/bin/mysqld").function("*@/usr/src/mysql ...

  3. android模拟器经常出现的一些问题及解决办法

    1.Unable to get view server version from device exlipse下编写好android应用程序时候,右键项目 run as android applica ...

  4. Java基础知识强化之IO流笔记37:FileReader/FileWriter(转换流的子类)复制文本文件案例

    1. 转换流的简化写法: 由于我们常见的操作都是使用本地默认编码,所以,不用指定编码.而转换流的名称有点长,所以,Java就提供了其子类供我们使用:FileReader / FileWriterOut ...

  5. skynet启动过程_bootstrap

    这遍摘自skynet 的wiki skynet 由一个或多个进程构成,每个进程被称为一个 skynet 节点.本文描述了 skynet 节点的启动流程. skynet 节点通过运行 skynet 主程 ...

  6. 简单的实现QQ通信功能(二)

    第二部分:功能需求以及大体思路 一:功能需求: 1. 角色:登录用户. 2. 登录: (1)检查用户名和密码是否正确,正确登录成功,否则提醒用户名或密码错误. (2)登录时可以选择登录状态,送入数据库 ...

  7. Mybatis特殊字符处理,Mybatis中xml文件特殊字符的处理

    Mybatis特殊字符处理,Mybatis中xml文件特殊字符的处理 >>>>>>>>>>>>>>>>& ...

  8. CentOS7下用jdk1.7编译hadoop-2.7.1全过程详解

    说实话,本人编译hadoop的过程比较曲折,但收获也很多,下面系统介绍一下CentOS7下编译hadoop-2.7.1的全过程吧. 先说明,32位Linux操作系统可以直接下载编译好的hadoop使用 ...

  9. js页面之间函数调用

    1.在父级页面调用子级页面的函数 当前页面(default.aspx)通过iframe嵌套index.aspx页面,在当前页面调用index.aspx里面的js函数,如下: myFrame.windo ...

  10. cognos 10.2.2 report studio数字---字符型查询注意事项

    做了一个简单的报表,就是按照员工编号查询员工,其中员工编号是全数字,我们保存在数据库中的是字符型varchar2(10),所以在report studio中做查询就一直报告服务器错误. 其中使用cas ...