关于quick-cocos2d-x新建自定义类绑定失败的处理方法

前端之家收集整理的这篇文章主要介绍了关于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" } 虽然不是非常清楚其中的区别,但是这部分修改明显和我新加的类无关。 经过比较两个文件夹,把和我新加的类以外的代码改成原始代码后,编译正常。

猜你在找的Cocos2d-x相关文章