coco2dx Lua调用自定义的C++方法
来源:互联网 发布:视频后期剪辑软件 编辑:程序博客网 时间:2024/06/16 00:05
本文代码实现环境
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 PyYAMLsudo 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 加入到如下编译资源中即可解决问题:
打包运行,效果如图所示:
- coco2dx Lua调用自定义的C++方法
- Coco2dx-3.0中如何调用LUA
- Coco2dx-3.0中如何调用LUA
- LUA脚本调用C函数的方法
- Lua 调用自定义C模块
- Lua 调用自定义C模块
- coco2dx c++ 到 Lua 的具体解析
- Lua脚本:Lua调用C实现方法
- Lua脚本:C调用Lua实现方法
- Lua 调用自定义C模块(练习)
- coco2dx-lua 引擎升级
- lua 和c的调用
- C++中使用Lua脚本 和lua中调用c的方法
- C++中使用Lua脚本 和lua中调用c的方法
- C++中使用Lua脚本 和lua中调用c的方法
- C++中使用Lua脚本 和lua中调用c的方法
- c和lua之间互相调用方法
- coco2dx中,创建精灵的各种方法
- 【模板+讲解】二分答案
- Javascript学习笔记_异步模式
- android N0 屏蔽某个应用的通知
- Java
- AndroidStudio3.0中butterknife报错- butterknife-7.0.1.jar (com.jakewharton:butterknife:7.0.1) Alternat
- coco2dx Lua调用自定义的C++方法
- elasticsearch聚合统计出现次数
- JavaScript中原型对象的彻底理解
- angular指令间的交互
- VMware的快照的相关知识
- Android: NDK编程入门笔记
- hibernate事务解决问题
- HDOJ 1339 A Simple Task(水题)
- 从命令行输入5个整数,放入一整型数组,然后打印输出。要求: 如果输入数据不为整数,要捕获输入不匹配异常,显示“请输入整数”;如果输入数据多余5个,捕获数组越界异常,显示“请输入5个整数”。 无论是否发