quick cocos2dx 3.3rc1 如何Lua调用自定义C++类(一)------ 生成桥接代码

quick cocos2dx 3.3rc1 如何Lua调用自定义C++类(一)------ 生成桥接代码,第1张

概述    虽然网上很多关于Lua调用自定义C++类的文章,但不知道为什么,一到自己去实践,总是遇见这样那样的问题,造成失败。让我都怀疑文章的正确性了。。。有些因为细节原因,而文章又没提!踩了无数的坑,昨天终于成功了,今天迫不及待写篇文章与大家分享!     如果对lua与C++如何交互不怎么清楚的朋友,可以看下这篇文章:     【木头Cocos2d-x 026】Lua篇(第01章):让Lua和C+

虽然网上很多关于Lua调用自定义C++类的文章,但不知道为什么,一到自己去实践,总是遇见这样那样的问题,造成失败。让我都怀疑文章的正确性了。。。有些因为细节原因,而文章又没提!踩了无数的坑,昨天终于成功了,今天迫不及待写篇文章与大家分享!

如果对lua与C++如何交互不怎么清楚的朋友,可以看下这篇文章:

【木头Cocos2d-x 026】Lua篇(第01章):让Lua和C++牵手

如果版本不是3.x的,用以前版本的可以看下这篇文章:

Cocos2d-x下Lua调用自定义C++类和函数的最佳实践

这篇文章详细介绍了几种lua调用C++的方法,最终说明了cocos2dx 3.x 用bindings-generator脚本,是多么的方便,我也感同身受,因为之前还用tolua++试过调用,还是以失败告终。。。

650) this.width=650;" alt="j_0012.gif" src="http://img.jb51.cc/vcimg/static/loading.png" src="http://img.baidu.com/hi/jx2/j_0012.gif">

虽然上面那篇文章说的很详细,但是我亲身经历测试成功,还是简单说下,让大家看得简单明了!!!

在这之前还是要说下,除了安装好Python之外,需要进行2个步骤:

1.安装Pyymal

http://pyyaml.org/download/pyyaml/PyYAML-3.10.win32-py2.7.exe

2.下载pyCheetah,并解压到C:\Python27\lib\site-packages

https://raw.github.com/dumganhar/my_old_cocos2d-x_backup/download/downloads/Cheetah.zip

还有NDK版本要r9d版本!!!!!!

官方文档:如何使用 bindings-generator 自动生成 lua绑定

以官方文档CustomClass类为例,步骤如下:

以下说的frameworks都是项目下的frameworks,不是quick下的!!!!

1.在frameworks/runtime-src/Classes/目录下,创建CustomClass类

frameworks/runtime-src/Classes/CustomClass.h

//CustomClass.h#ifndef__CUSTOM__CLASS#define__CUSTOM__CLASS#include"cocos2d.h"classCustomClass:publiccocos2d::Ref{public:CustomClass();~CustomClass();boolinit();CREATE_FUNC(CustomClass);intfoo(inti);};#endif//__CUSTOM__CLASS

frameworks/runtime-src/Classes/CustomClass.cpp

#include"CustomClass.h"CustomClass::CustomClass(){}CustomClass::~CustomClass(){}boolCustomClass::init(){returntrue;}intCustomClass::foo(inti){returni+100;}

2.在frameworks/cocos2d-x/tools/tolua/目录下,创建cocos2dx_custom.ini文件

[cocos2dx_custom]prefix=cocos2dx_customtarget_namespace=ccandroID_headers=-I%(androIDndkdir)s/platforms/androID-14/arch-arm/usr/include-I%(androIDndkdir)s/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/include-I%(androIDndkdir)s/sources/cxx-stl/gnu-libstdc++/4.7/include-I%(androIDndkdir)s/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a/include-I%(androIDndkdir)s/sources/cxx-stl/gnu-libstdc++/4.8/includeandroID_flags=-D_SIZE_T_defineD_clang_headers=-I%(clangllvmdir)s/lib/clang/3.3/includeclang_flags=-nostdinc-xc++-std=c++11-U__SSE__cocos_headers=-I%(cocosdir)s-I%(cocosdir)s/cocos-I%(cocosdir)s/cocos/platform/androIDcocos_flags=-DANDROIDcxxgenerator_headers=extra_arguments=%(androID_headers)s%(clang_headers)s%(cxxgenerator_headers)s%(cocos_headers)s%(androID_flags)s%(clang_flags)s%(cocos_flags)s%(extra_flags)sheaders=%(cocosdir)s/../runtime-src/Classes/CustomClass.hclasses=CustomClassskip=rename_functions=rename_classes=remove_prefix=classes_have_no_parents=base_classes_to_skip=abstract_classes=script_control_cpp=no

这是最简单的ini文件了,看起来很多,其实最主要的是修改以下几句,其他几乎不用改变。

[cocos2dx_custom]prefix=cocos2dx_customtarget_namespace=ccheaders=%(cocosdir)s/../runtime-src/Classes/CustomClass.hclasses=CustomClass

具体含义看官方文档吧,这里就不说了,这里要说的是[cocos2dx_custom],必须与文件名字一样,否则运行脚本的时候,会报错!反正最好和文件名字一样,就不用再去踩坑了!prefix这个也用文件名字吧~

3.在frameworks/cocos2d-x/tools/tolua/目录下,修改脚本

我把genbindings.py拷贝了一份把名字改成genbindings_custom.py,修改以下代码

cmd_args={'cocos2dx_custom.ini':('cocos2dx_custom','lua_cocos2dx_custom_auto')}

这样就只会编译这个一个文件,节约时间!!!

4.在frameworks/cocos2d-x/tools/tolua/目录下,运行脚本

在frameworks/cocos2d-x/tools/tolua/目录下运行cmd,然后输入命令 Python genbindings_custom.py

成功执行genbindings.py脚本后,会在frameworks/cocos2d-x/cocos/scripting/lua-bindings/auto/目录下,生成以下2个文件

650) this.width=650;" title="QQ截图20141210180735.png" alt="wKiom1SIG33zoC7NAAA38iRWuks071.jpg" src="http://img.jb51.cc/vcimg/static/loading.png" src="http://s3.51cto.com/wyfs02/M01/54/A3/wKiom1SIG33zoC7NAAA38iRWuks071.jpg">

到此我们所需要的文件都齐全了!!!!!!!

关于如何调用在下篇文章讲解!

如有不足之处,请大家指出,一起交流成长!

总结

以上是内存溢出为你收集整理的quick cocos2dx 3.3rc1 如何Lua调用自定义C++类(一)------ 生成桥接代码全部内容,希望文章能够帮你解决quick cocos2dx 3.3rc1 如何Lua调用自定义C++类(一)------ 生成桥接代码所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1020143.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存