tolua++的使用

如约,今天加班加点搞定了tolua的使用,算是对上一篇的承接,也是跟自己的约定的开始。

下面是正题!

首先说明几点: 1、cocos2dx包含了tolua的源码,所以我们不需要自己编译源码了。

2、我试了一下自己编译源码得到tolua++.lib,然后加入工程中运行发生了指针错误,现阶段凭借我的水平还不能明白哪的错。。。。

3、其实。。。费这么大劲都是因为自己的不熟练与低级错误

然后   真的是真的正题了!

1、首先用python创建一个cocos2dx的lua工程

2、VS2012打开这个工程后,找到编译器中项目目录中的liblua\cocos2dx_support\luacocos2d.cpp  然后,记住它。。。

3、找到cocos2dx大文件夹下的tools,其中有tolua++,点进去,准备傻瓜式的使用吧

4、参考网上大神们的教程生成luacocos2d.cpp教程1,教程2.

5、还记得刚才记住的那个文件吧,他其实在cocos2d-x-2.2.2\scripting\lua\cocos2dx_support里面,用刚刚生成的替换这里的luacocos2d.cpp。

6、然后据说就在lua脚本文件中写一个调用自定义类的代码试试就行了,但是,我没有这么做!

7、我为了搞清楚tolua使用的细节,所以移除了原先class中的源文件和main文件,自己又写了一个main,

      然后把生成luacocos2d.cpp用的test.h文件与其函数实现的test.cpp文件加入工程。

下面是luacocos2d.cpp的位置(网上说的路径我都没找着。。。还是以我自己的路径为准吧)

tolua++的使用_第1张图片

然后是上面说的,一系列移除与添加操作之后的现状的工程的样子:

tolua++的使用_第2张图片


8、test.cpp中就是普通的函数实现,注意这个工程,luacocos2d.h中还要包含test.h,并且要加上最关键的函数声明TOLUA_API int tolua_test_open (lua_State* tolua_S)

9、然后就是编写main.cpp了,因为原先的工程是win32窗口工程,为了简化lua脚本的编写,项目改成了控制台工程,下面上渣代码:

#include 

//#include "lua.hpp"
#include "cocos2d.h"
#include "CCEGLView.h"
#include "AppDelegate.h"
#include "CCLuaEngine.h"
#include "SimpleAudioEngine.h"
#include "Lua_extensions_CCB.h"
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS || CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID || CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
#include "Lua_web_socket.h"
#endif
extern "C"
{
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
#include "tolua++.h"
#include "test.h"//额,包含了这么多头文件其实是没必要的

static int prin(lua_State *L)
{
	printf("helloword/n\n");
	return 1;
}
TOLUA_API int tolua_test_open (lua_State* tolua_S);
void main()
{
    lua_State *L =  lua_open();
	

    luaL_openlibs(L);
	//lua_register(L, "prin", prin);
	 tolua_test_open( L );//关键函数,将c中的函数暴露给lua
	 
    luaL_dofile(L, "H:\\cocos2d-x-2.2.2\\projects\\cocos2dxlua\\Resources\\test.lua");//不应该写硬路径,应该用补全函数
    lua_close(L);


    return ;
}

10、基本重点的都完成了,接下来就是编写lua脚本了,

       这期间犯了一个错误,导致卡了一晚上(lua写函数的时候形参写错了),因为还不会log,只看到小黑框一闪而过,所以死活找不到原因啊。。。

       确保没错之后,运行,lua调用C++自定义类成功!

11、总结:真不知道这东西能流行几年,我以前做的硬件一辈子不会过时,而现在做软件。。。感觉还没学会就淘汰了。。。。

        所以我会尽量找到游戏编程中有价值的东西来学与记录。

        现在难点主要是没人愿意教,而且网上资料少且简陋,那么这些资料我来补全!

        如果我以后开公司了肯定要应届生!好好培养,有感情做事才爽!

        

你可能感兴趣的:(lua,cocos2dx)