coco2dx Lua调用自定义的C++方法

本文代码实现环境

cocos2dx version-3.15 + Mac XCode version-8.3.3

之前介绍过如何创建自己的 Lua 工程:http://blog.csdn.net/xiefeifei316948714/article/details/78030641 这里就不多赘述了

工程创建完成后,在工程路径 LearnCocosLua/frameworks/cocos2d-x/tools/tolua/  下查看 README.mdown 文档

On MAC:
----------

* The OSX 10.10 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 NDK 64bit r10c or later from [Android Ndk](https://developer.android.com/ndk/downloads/index.html)
* Run
<pre>
	export NDK_ROOT=/path/to/android-ndk-10c
    ./genbindings.py
</pre>
其内容是配置各个平台下对应的环境依赖项:这里MAC下需要 

1.安装python

2.sudo easy_install pip

3.sudo pip install PyYAML

4.sudo pip install Cheetah

5.配置NDK_ROOT


环境配置完成后,进入到工程目录 LearnCocosLua/frameworks/cocos2d-x/tools/tolua/ 下找到 genbindings.py 文件

终端下,通过命令行 python genbindings.py 执行文件,输出如下语句,说明环境配置成功

---------------------------------

Generating lua bindings succeeds.

---------------------------------


注:通过查看 genbindings.py 文件,可以知道生成对应的文件存放在 LearnCocosLua/frameworks/cocos2d-x/cocos/scripting/lua-bindings/auto 路径下

cmd_args = {'cocos2dx.ini' : ('cocos2d-x', 'lua_cocos2dx_auto'), \
                    }
是将 cocos2dx.ini 生成对应的 lua_cocos2dx_auto.hpp 和 lua_cocos2dx_auto.cpp 两个文件 ,一个Lua调用C++的中间层, 相当于 JNI


工程下新建我们自己的 C++ 文件:


.cpp 函数对应着实现就行了。


回到 LearnCocosLua/frameworks/cocos2d-x/tools/tolua/ 路径下

1.复制 cocos2dx.ini 并将其重命名为 MyClass.ini ,修改内容如下图:



2.复制 genbindings.py 并将其重命名为 MyClass.py,修改内容如下图:


对于python,大家还是可以好好学习一下的,使用性还是比较广泛的。

3.终端执行 python MyClass.py 即可在路径 LearnCocosLua/frameworks/cocos2d-x/cocos/scripting/lua-bindings/auto 下

生成对应的 lua_MyClass_auto.hpp 和 lua_MyClass_auto.cpp 两个文件

4.将 lua_MyClass_auto.hpp 和 lua_MyClass_auto.cpp 导入到工程下

5.在 AppDelegate 加入如下代码

#include "scripting/lua-bindings/auto/lua_MyClass_auto.hpp"

    //register custom function
    //LuaStack* stack = engine->getLuaStack();
    //register_custom_function(stack->getLuaState());
    register_all_MyClass(L);

6.在 MainScene.lua 下调用 C++ 方法



注意:比较坑的是,此时编译可能会报错


解决方法:把 lua_MyClass_auto.cpp 加入到如下编译资源中即可解决问题:



打包运行,效果如图所示:





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值