关于quick-cocos2d-x新建自定义类绑定失败的处理方法
来源:互联网 发布:java中public方法 编辑:程序博客网 时间:2024/06/16 03:03
先把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"
}
虽然不是非常清楚其中的区别,但是这部分修改明显和我新加的类无关。
经过比较两个文件夹,把和我新加的类以外的代码改成原始代码后,编译正常。
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"
}
虽然不是非常清楚其中的区别,但是这部分修改明显和我新加的类无关。
经过比较两个文件夹,把和我新加的类以外的代码改成原始代码后,编译正常。
0 0
- 关于quick-cocos2d-x新建自定义类绑定失败的处理方法
- quick-cocos2d-x 绑定C++自定义类
- Quick-Cocos2d-x 3.3绑定自定义类至Lua(二)新建项目中配制环境
- 【Quick-COCOS2D-X 3.3 如何绑定自定义类至Lua之二】新建项目中配制环境
- quick-cocos2d-x 创建自定义lua绑定c++类
- quick-cocos2d-x 创建自定义lua绑定c++类
- Quick-Cocos2d-x 创建自定义Lua绑定C++类
- 【Quick-COCOS2D-X 3.3 如何绑定自定义类至Lua之四】使用绑定C++至Lua的自定义类
- Quick-Cocos2d-x 3.3绑定自定义类至Lua(四)使用绑定C++至Lua的自定义类
- quick-cocos2d绑定自定义类到lua
- 【Quick-COCOS2D-X 3.3 如何绑定自定义类至Lua之一】环境搭建
- Quick-Cocos2d-x 3.3绑定自定义类至Lua(一)环境搭建
- 【Quick-COCOS2D-X 3.3 如何绑定自定义类至Lua之三】动手绑定自定义类至Lua
- Quick-Cocos2d-x 3.3绑定自定义类至Lua(三)动手绑定自定义类至Lua
- cocos2d-x 3.0 lua类的自定义和绑定
- 在quick-cocos2d-x中添加自定义的类给lua使用
- 在quick-cocos2d-x中添加自定义的类给lua使用
- 在Quick-Cocos2d-x中添加自定义的类给Lua使用
- Apache Pig字符串截取实战小例子
- 移动端webapp开发必备知识
- 回头看看也挺好
- 利用java反射机制 读取配置文件 实现动态类加载以及动态类型转换
- 【 程序运行时出现莫名奇妙的异常现象的原因之总结 】
- 关于quick-cocos2d-x新建自定义类绑定失败的处理方法
- 工具记载
- OC面向对象—继承
- c 语言基础
- django简单架构图
- C#小数点的控制(小数点后一位)
- BZOJ系列《[NOI2009]管道取珠》题解
- spring mvc 集成 spring data jpa
- js防止表单的重复提交