COCOS2DX3.17.2 TOLUA C++导出LUA详细步骤

首先声明,非原创,转载自:https://blog.csdn.net/luoting1010322132/article/details/103886945

在使用tolua导出c++类的过程中遇到了很多坑,现在详细记录下来,免得在采坑。

cocos前期准备:

  • windows10系统
  • 下载coco2dx源码,我下载的是3.17.2,这个在官网下载即可。配置cocos环境,此步骤后检查cocos环境变量是否已经配置好,包括:COCOS_CONSOLE_ROOT,COCOS_TEMPLATES_ROOT,COCOS_X_ROOT
  • 使用cocos命令创建lua项目,这个网上有很多指导,此处不说明。我的创建的项目名是cocos-lua-pro01。
  • 编写c++类,类文件名是ManagerMainExport.h,我的是如下示例:
 class ManagerSubExport 
{
public:
	static ManagerSubExport* create();
 
	//获取并解析启动运行参数
	static std::string getStartUpJsonParams();
 
	//连接ip和port
	virtual bool startTcp(char* ip, int port) { return false; };
 
	//停止并释放tcp
	virtual bool stopTcp() { return false; };
 
	//发送data到sock
	virtual bool sendMsgToMain(char* data, int len) { return false; };
 
	//注册lua回调,接收缓存中有数据时会调用回调
	virtual void registerLuaCallback(int recvFun, int exitFun) {};
 
	virtual void setUId(int uId) {};
 
	virtual void retainInstance() {};
 
	virtual void releaseInstance() {};
};

正式开始tolua使用:

tolua环境准备:

  • 打开项目cocos-lua-pro01\frameworks\cocos2d-x\tools\tolua\README.mdown文档:

我的是在windows10下,因此参考On Windows栏说明,总结上述文档的说明,依次需要安装一下环境:

  1. 下载安装android-ndk-r16,官网下载:https://developer.android.google.cn/ndk/downloads/older_releases.html,选择windows 32位的。创建并配置环境变量NDK_ROOT,值D:\NDK\android-ndk-r16b-windows-x86\android-ndk-r16b
    Windows 32 位android-ndk-r16b-windows-x86.zip
  2. 下载并安装Python2.7.3,直接访问文档中的地址下载。安装完成后,需要将Python的路径添加到系统环境变量PATH中。
  3. 安装Python的pip包,Python2.7需要另外安装pip,参考https://blog.csdn.net/zz153417230/article/details/80226471完成安装,将C:\Python27\Scripts添加到环境变量PATH。
  4. 下载安装pyyaml,访问文档中路径直接下载,默认安装即可。
  5. 下载Cheetah,访问文档路径下载,解压,打开cmd,进入解压目录Cheetah-2.4.4\Cheetah-2.4.4,依次执行命令‘python setup.py build` 和 'python setup.py install'。成功后,使用会出现警告:“You don't have the C version of NameMapper installed!”,参考https://blog.csdn.net/magicharvey/article/details/38302217文档得以解决:访问https://pypi.org/project/Cheetah3/3.2.4/#files下载Cheetah3-3.2.4-cp27-cp27m-win32.whl,打开cmd使用命令“pip install Cheetah3-3.2.4-cp27-cp27m-win32.whl”完成安装后,不会再出现警告。

开始使用tolua编译导出c++类:

  1. 进入项目tulua路径:E:\work\cocos-lua-pro01\frameworks\cocos2d-x\tools\tolua,复制备份cocos2dx.ini和genbindings.py,重命名MutiWinManager.ini和genbindings_myclass.py(名字可随便取)。

打开ini进行编辑:下图4处红色方框的内容需要修改,其余不变,

第1、2处和ini文件名相同,文件名也可和c++类名相同,第3处填写需要导出的c++类文档路径,多个文件用空格隔开,第4处填写需要导出的类名(有时候文件名和类名不同),之后导出第4处的类,多个类用空格隔开。

 打开py文件编辑:下图重要的2处红色方框内的内容比较重要,第1处是导出成功后生成的h和cpp文件存放的路径,我没有修改它,第2处需要修改,改成自己的ini文件名,我的是MutiWinManager.ini,后面括号中的内容,前面的是ini文件上图第1处的值(必须与上面第1处值相同),后面是生成的h和cpp文件名(可修改)。

    2. 编辑完成后,打开cmd,进入ini目录:E:\work\cocos-lua-pro01\frameworks\cocos2d-x\tools\tolua,执行命令“python genbindings_myclass.py”(根据你自己重命名的py调整命令)。成功后即在上图第1处的路径下生成对应的h和cpp文件。

 

 

至此,所有步骤已全部完成,路途还算顺利。但是但是我被1个坑坑了2天,网上好多博客都没有说明这个问题,可能他们都没有遇到过吧,但是我就遇到了,而且毫无办法,导致我一直导出失败,完全找不到原因,又搜索不到资料,环境安装了好几遍都不想。md!现在我记录下来,以免大家再遇到: 

坑在windows10默认安装路径下都有个“Program Files”,所有我最开始就将NDK放在D:\Program Files下,然后就开始了慢慢长夜导出失败的路途上越走越远,md!后来通过阅读generator.py代码(genbindings_myclass.py最终调用E:\work\cocos-lua-pro01\frameworks\cocos2d-x\tools\bindings-generatorgenerator.py来导出的),发现它是用空格来分割每个配置参数的,我就隐隐约约感觉到坑似乎在这里。然后就将NDK移出了Program Files,直接放到根目录下,没有空格,然后再次导出,mdmdmdmdmd,一次就成功啦!!!!我恍恍惚惚恍恍惚惚恍恍惚惚。。。。。。。

希望大家再也不要遇到这个坑了。原理 Program Files可以原理太多坑。

感谢感谢!遇事不放弃,总会找到解决方案的,关键时刻还是要仔细。加油!

附带给出部分环境安装包吧,怕大家找不到:

链接:https://pan.baidu.com/s/1zRVYLJyoyDTKmzPS7rKuYQ 
提取码:jwxg

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值