lua导入c++
来源:互联网 发布:淘宝无名体育怎么样 编辑:程序博客网 时间:2024/05/20 18:48
Lua脚本的导出
准备[编辑]
- 确定你已经安装了 'android-ndk-r9b' 注意:jdk一定为9d
- 下载 python2.7.3 (http://www.python.org/ftp/python/2.7.3/python-2.7.3.msi)
- 将python的安装目录(C:\Python27)添加到 window是的环境变量 'PATH' 中。
- 下载 pyyaml 工具( http://pyyaml.org/download/pyyaml/PyYAML-3.10.win32-py2.7.exe)
,并安装它 - 下载 pyCheetah工具压缩包(https://raw.github.com/dumganhar/my_old_cocos2d-x_backup/download/downloads/Cheetah.zip)
,并解压到 (C:\Python27\Lib\site-packages) - 设置环境变量 ('NDK_ROOT')
- 注:上述工具 可以在外网ftp地址:\\10.224.4.182\kaifa$\zy\toLua 去取。
思路[编辑]
- 在项目工程中创建 需要Lua脚本导出的 c++类。
- 编写该类的导出配置文件。
- 在导出工具中添加配置文件,并生成中间文件。
- 将中间文件(c++类文件)导入项目工程。
- 在项目工程入口文件中,调用中间文件的注入接口。
例子[编辑]
咱写个最简单HelloWorld的例子。
- 在IDE中新建一个CocosLua工程,取名叫 HelloToLua.
- 打开win32工程(HelloToLua\frameworks\runtime-src\proj.win32\HelloToLua.sln)
- HelloToLua
- libbox2d
- libcocos2d
- libluacocos2d
- libSpine
- 在HelloToLua游戏工程中,新建HelloWorld类(HelloToLua\frameworks\runtime-src\Classes),头文件和源文件如下:
- 改写导出配置文件,复制一份cocos2dx_spine.ini,命名为helloworld.ini(HelloToLua\frameworks\cocos2d-x\tools\tolua),改动如下:
- [cocos2dx_spine] => [helloworld]
- prefix = cocos2dx_spine => prefix = helloworld
- headers = %(cocosdir)s/cocos/editor-support/spine/spine-cocos2dx.h =>headers = %(cocosdir)s/../runtime-src/Classes/HelloWorld.h
- classes = cocos2dx_spine => classes = helloworld
- skip = ... => skip =
- base_classes_to_skip = => base_classes_to_skip = Ref ProcessBase
- abstract_classes = ... => abstract_classes =
- 改写自己的导出工具,复制一份genbindings.py,命名为genbindings_helloworld.py(HelloToLua\frameworks\cocos2d-x\tools\tolua),改动如下:
- output_dir = '%s/cocos/scripting/lua-bindings/auto' % project_root =>output_dir = '%s/../runtime-src/Classes/lua-bindings/auto' % project_root
- cmd_args = {...)} => cmd_args = {'helloworld.ini' : ('helloworld', 'lua_helloworld_auto')}
- 生成中间文件,使用 cmd 命令行,先进入导出工具所在目录,然后 键入 python genbindings_helloworld.py命令,然后回车,就会生成相应的中间文件
lua_helloworld_auto.cpp/hpp(HelloToLua\frameworks\runtime-src\Classes\lua-bindings\auto) - 将中间文件导入HelloToLua工程
- 程序入口注册c++方法,在lua_module_register.h中的lua_module_register方法中,添加一行‘register_all_helloworld(L);’来注册c++方法,
包含头文件为(#include "../runtime-src/Classes/lua-bindings/auto/lua_helloworld_auto.hpp"),效果如下: - 重新编译
- 调用c++注册好的lua方法。在main.lua中的 main()方法 添加一行 HelloWorld:PrintHelloWorld,效果如下:
- 运行 输出:== Hello World !!! ==
0 0
- lua -->c c-->lua
- lua导入c++
- lua -->c
- Lua C
- [Lua]C/C++调用Lua
- [lua]C调用lua函数
- 【Lua】Lua与C交互
- Eclipse 导入Quick-Lua 工程
- lua与c互调--c调用lua
- lua与c互调--lua调用c
- c调lua, lua调c
- lua的C接口
- Lua 与C交互
- C/C++ 调用 Lua
- c调用lua脚本
- Lua调用C函数
- C调用lua
- Lua 与 C 交互
- 史上最简单的IT博客
- windows和linux是小端还是大端
- android 手机通过mode上网流程
- 记,一次URL乱码解决
- 软件开发模型
- lua导入c++
- 软件正在改变世界,程序员应该得到足够尊重
- Codeforces Round #336 (Div. 1)A. Chain Reaction(DP)
- eclipse testng 插件报错 Software caused connection abort: socket write error
- java环境变量配置不起作用
- Intent启动活动以及Intent传递数据&activity的生命周期
- ios返回上一个页面后contentOffset发生改变
- oracle type 数据类型
- 【Gson】Json转换器之Gson——项目实战