前端之家收集整理的这篇文章主要介绍了
关于quick-cocos2d-x新建自定义类绑定失败的处理方法,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
先把quick-cocos2d-x绑定
自定义类的流程简单写一下 1.用quick-cocos2d-x
自带的Player3.exe创建工程,或者用cocos ide创建工程 2.打开frameworks\runtime-src\proj.win32下的工程
文件,重新编译一遍,应当可以编译通,注意
生成程序的
文件名与默认不同 3.新建自己的类,位置放在frameworks\runtime-src\Classes\quick-src\extra下,编译一下 4.
修改runtime-src\Classes\quick-src\extra\luabinding\cocos2dx_extra_luabinding.tolua
文件,开头
增加$#include "mylib/MyClass.h",后面
增加自己的类定义 5.执行frameworks\runtime-src\Classes\quick-src\extra\luabinding\build.bat 6.重新编译工程 7.这样在自己的Lua
代码中就可以
调用自定义类的
函数了 如果是静态
函数,就是cc.类名:
函数名,比如cc.MyClassA:GetResult(2,2) 如果不是静态
函数,需要先建一个create静态
函数,里面返回自己类的指针,然后用该指针才能
调用成员
函数 例如: c++ MyClassA *MyClassA::create() { MyClassA *request = new MyClassA(); return request; } lua local myClassA = cc.MyClassA:create() print(myClassA:GetMyResult(2,2)) 8.为了
调用更规范,创建一个对应的Lua类,把cc.MyClassA这种操作封装到该类中,就可以像其它类一样使用了 结果发现在第6步编译时
提示出错 2>cocos2dx_extra_luabinding.obj : error LNK2019: 无法解析的外部符号 _toluafix_ref_function,该符号在
函数 "int __cdecl tolua_cocos2dx_extra_luabinding_HTTPRequest_createWithUrl00(struct lua_State *)" (?tolua_cocos2dx_extra_luabinding_HTTPRequest_createWithUrl00@@YAHPAUlua_State@@@Z) 中被引用 2>cocos2dx_extra_luabinding.obj : error LNK2019: 无法解析的外部符号 _toluafix_isfunction,该符号在
函数 "int __cdecl tolua_cocos2dx_extra_luabinding_HTTPRequest_createWithUrl00(struct lua_State *)" (?tolua_cocos2dx_extra_luabinding_HTTPRequest_createWithUrl00@@YAHPAUlua_State@@@Z) 中被引用 2>C:\workspace\QuickGame2\frameworks\runtime-src\proj.win32\../../../runtime/win32/QuickGame2.exe : fatal error LNK1120: 2 个无法解析的外部命令 即便不新建自己的类,直接执行build.bat,也会无法编译通 新建一个工程,用
文件比较工具比较原始的runtime-src\Classes\quick-src\extra\luabinding目录,和重新
生成的同目录,发现
代码有所不同 比如原始
代码是 extern "C" { #include "lua.h" #include "tolua++.h" } #include "tolua_fix.h" 新
生成的变成 extern "C" { #include "lua.h" #include "tolua++.h" #include "tolua_fix.h" } 虽然不是非常清楚其中的区别,但是这部分
修改明显和我新加的类无关。 经过比较两个
文件夹,把和我新加的类以外的
代码改成原始
代码后,编译正常。