lua导入c++

来源:互联网 发布:淘宝无名体育怎么样 编辑:程序博客网 时间:2024/05/20 18:48

Lua脚本的导出


准备[编辑]

  1. 确定你已经安装了 'android-ndk-r9b' 注意:jdk一定为9d
  2. 下载 python2.7.3 (http://www.python.org/ftp/python/2.7.3/python-2.7.3.msi)
  3. 将python的安装目录(C:\Python27)添加到 window是的环境变量 'PATH' 中。
  4. 下载 pyyaml 工具( http://pyyaml.org/download/pyyaml/PyYAML-3.10.win32-py2.7.exe)
    ,并安装它
  5. 下载 pyCheetah工具压缩包(https://raw.github.com/dumganhar/my_old_cocos2d-x_backup/download/downloads/Cheetah.zip)
    ,并解压到 (C:\Python27\Lib\site-packages)
  6. 设置环境变量 ('NDK_ROOT')
注:上述工具 可以在外网ftp地址:\\10.224.4.182\kaifa$\zy\toLua 去取。

思路[编辑]

  1. 在项目工程中创建 需要Lua脚本导出的 c++类。
  2. 编写该类的导出配置文件。
  3. 在导出工具中添加配置文件,并生成中间文件。
  4. 将中间文件(c++类文件)导入项目工程。
  5. 在项目工程入口文件中,调用中间文件的注入接口。


例子[编辑]

咱写个最简单HelloWorld的例子。

  1. 在IDE中新建一个CocosLua工程,取名叫 HelloToLua.
  2. 打开win32工程(HelloToLua\frameworks\runtime-src\proj.win32\HelloToLua.sln)
    • HelloToLua
    • libbox2d
    • libcocos2d
    • libluacocos2d
    • libSpine
  3. 在HelloToLua游戏工程中,新建HelloWorld类(HelloToLua\frameworks\runtime-src\Classes),头文件和源文件如下:
    • HelloWorld Header.pngHelloWorld Cpp.png
  4. 改写导出配置文件,复制一份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 =
  5. 改写自己的导出工具,复制一份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')}
  6. 生成中间文件,使用 cmd 命令行,先进入导出工具所在目录,然后 键入 python genbindings_helloworld.py命令,然后回车,就会生成相应的中间文件
    lua_helloworld_auto.cpp/hpp(HelloToLua\frameworks\runtime-src\Classes\lua-bindings\auto)
  7. 将中间文件导入HelloToLua工程
  8. 程序入口注册c++方法,在lua_module_register.h中的lua_module_register方法中,添加一行‘register_all_helloworld(L);’来注册c++方法,
    包含头文件为(#include "../runtime-src/Classes/lua-bindings/auto/lua_helloworld_auto.hpp"),效果如下:
    • Lua module register h.png
  9. 重新编译
  10. 调用c++注册好的lua方法。在main.lua中的 main()方法 添加一行 HelloWorld:PrintHelloWorld,效果如下:
    • Main lua.png
  11. 运行 输出:== Hello World !!! ==
    • Success.png
0 0
原创粉丝点击