cocos2dx中注册导出c++函数供lua调用(使用tolua++)
2014-03-08 15:52
661 查看
弄了半天终于搞定了,网上有很多相似的帖子,但可能由于我基础不好,总是出错,最后搞定了。
参考http://www.cnblogs.com/mrblue/archive/2013/06/08/3126997.html,机器是windowsxp,VS2010
这种方法是不依赖于cocos2dx引擎中的LuaCocos2d.cpp,而完全在别处建立一个新的相同功能的cpp文件。
只需要以下几步即可:
1,创建自己的类(当然)
2,为了以后创建用来与lua交互的中间类MyCToL.cpp(先不创建),先创建他的头文件MyCToL.h
3,创建总的pkg文件
4,为要添加的新类创建pkg文件
5,用cmd编译一下
6,在AppDelegate.cpp中添加一行代码,注册一下
现在,一步步开始实现,为了快速看到效果,一切从简吧
1,创建自己的类
因为头文件中也可以定义类,为了简便,都写在一个头文件MyClass.h中
2,创建MyCTol.h
4,创建新类的pkg文件
将根目录下的tolua++下的tolua++.zip解压,可以得到tolua++.exe文件,将它和上面创建的那些文件放在一起。
在cmd中cd过去,输入tolua++ -tCocos2d -o MyCToL.cpp MyCToL.pkg 回车,等命令执行完之后去目录中看,多了一个MyCToL.cpp文件,将它拖到项目里
6,在AppDelegate.cpp中注册
在CCLuaEngine* pEngine = CCLuaEngine::defaultEngine();下面一行添加
tolua_MyCToL_open(pEngine->getLuaStack()->getLuaState());
同时,在顶部加上他的头文件
运行一下,如果是提示 未能加载MyCToL.h No Such direct之类的,应该是头文件路径与appDelegate不是同一目录,可以参考我之前一篇文章:)/article/1855751.html
在lua中测试一下
local aaa= MyClass:f(3)
CCLuaLog(aaa)
结果显示正常,终于通了。。
转载请保留原文地址/article/1855750.html
参考http://www.cnblogs.com/mrblue/archive/2013/06/08/3126997.html,机器是windowsxp,VS2010
这种方法是不依赖于cocos2dx引擎中的LuaCocos2d.cpp,而完全在别处建立一个新的相同功能的cpp文件。
只需要以下几步即可:
1,创建自己的类(当然)
2,为了以后创建用来与lua交互的中间类MyCToL.cpp(先不创建),先创建他的头文件MyCToL.h
3,创建总的pkg文件
4,为要添加的新类创建pkg文件
5,用cmd编译一下
6,在AppDelegate.cpp中添加一行代码,注册一下
现在,一步步开始实现,为了快速看到效果,一切从简吧
1,创建自己的类
因为头文件中也可以定义类,为了简便,都写在一个头文件MyClass.h中
class MyClass { public: MyClass(){}; static int f(int a){return 10;}; };
2,创建MyCTol.h
#ifndef __MY_CPPTOLUA_H_ #define __MY_CPPTOLUA_H_ extern "C" { #include "tolua++.h" #include "tolua_fix.h" } #include "MyClass.h" TOLUA_API int tolua_MyCToL_open(lua_State* tolua_S); #endif // __MY_CPPTOLUA_H_3,创建总的pkg文件
$#include "MyCToL.h" $pfile "MyClass.pkg"先创建记事本,再将上面两行代码copy进去,之后把后缀名改为.pkg就可以了
4,创建新类的pkg文件
class MyClass { static int f(int a); };5,使用cmd编译
将根目录下的tolua++下的tolua++.zip解压,可以得到tolua++.exe文件,将它和上面创建的那些文件放在一起。
在cmd中cd过去,输入tolua++ -tCocos2d -o MyCToL.cpp MyCToL.pkg 回车,等命令执行完之后去目录中看,多了一个MyCToL.cpp文件,将它拖到项目里
6,在AppDelegate.cpp中注册
在CCLuaEngine* pEngine = CCLuaEngine::defaultEngine();下面一行添加
tolua_MyCToL_open(pEngine->getLuaStack()->getLuaState());
同时,在顶部加上他的头文件
运行一下,如果是提示 未能加载MyCToL.h No Such direct之类的,应该是头文件路径与appDelegate不是同一目录,可以参考我之前一篇文章:)/article/1855751.html
在lua中测试一下
local aaa= MyClass:f(3)
CCLuaLog(aaa)
结果显示正常,终于通了。。
转载请保留原文地址/article/1855750.html
相关文章推荐
- Quick-Cocos2d-x 使用tolua工具导出C++的类给Lua调用
- Quick-Cocos2d-x 2.26 使用tolua工具导出C++的类给Lua调用WINDOWS篇
- tolua 使用 Lua调用c++多返回值函数
- Quick-Cocos2d-x 使用tolua工具导出C++的类给Lua调用
- Quick-Cocos2d-x 使用tolua工具导出C++的类给Lua调用
- Quick-Cocos2d-x 使用tolua工具导出C++的类给Lua调用
- Quick-Cocos2d-x 使用tolua工具导出C++的类给Lua调用
- Quick-Cocos2d-x 使用tolua工具导出C++的类给Lua调用
- Lua的使用入门之C/C++与lua函数的混合调用
- 使用tolua++实现C++与LUA相互调用
- 使用tolua++实现C++与LUA相互调用
- lua调用C++函数崩溃时,查看lua的调用栈信息 (特别适用于tolua++)
- 使用C++调用 LUA 函数收藏
- cocos2dx关于在c/c++中调用lua函数
- 使用tolua++实现C++与LUA相互调用
- cocos2d-x中使用tolua++导出函数中传递字节流给lua使用的问题
- lua调用C++函数崩溃时,查看lua的调用栈信息(特别适用于tolua++)
- Lua学习之3 :tolua++导出C++变量给Lua使用
- Cocos2d-Lua 3.12 生成绑定 导出C++类给LUA调用( tolua genbindings.py 的使用)
- cocos2dx中使用tolua++使lua调用c++函数