quick3.3注册C++类给lua调用(windows版)

本文参考官方教程http://cn.cocos2d-x.org/tutorial/show?id=513完成
1,仿照network,native等在frameworks\runtime-src\Classes\quick-src\extra中加入myclass文件夹,在文件夹中创建CCMyClass.h和CCMyClass.cpp两个文件
CCMyClass.h


#ifndef __CC_EXTENSION_CCMYCLASS_H_
#define __CC_EXTENSION_CCMYCLASS_H_

#include "cocos2dx_extra.h"
NS_CC_EXTRA_BEGIN

class MyClass
{
public:
    static void sayHello(void);
    
};

NS_CC_EXTRA_END

#endif // __CC_EXTENSION_CCMYCLASS_H_

     

CCMyClass.cpp


#include "myclass/CCMyClass.h"
#include <iostream>

NS_CC_EXTRA_BEGIN

void MyClass::sayHello(void)
{
    std::cout<<"hello"<<std::endl;
}

NS_CC_EXTRA_END

     

2,修改luabinding\cocos2dx_extra_luabinding.tolua文件
在文件头部加入$#include “myclass/CCMyClass.h”
在文件尾部加入
class MyClass
{
static void sayHello(void);
};
3,然后运行build.bat,假定你的代码是用svn管理的,运行完build.bat批处理后会发现luabinding目录下有许多文件改变了,此时除了cocos2dx_extra_luabinding.cpp和cocos2dx_extra_luabinding.tolua
保留改变,luabinding目录下其它的文件都revent(估计是build.bat文件运行产生的副作用,
不然在后面的步骤中用vs编译时会报 error LNK2019: 无法解析的外部符号 _toluafix_isfunction 错误)
4,用vs打开win32工程(我的是vs2013)在Classes\quick-src\extra下新建筛选器myclass,将CCMyClass.h和CCMyClass.cpp添加进去
5,清理后重新编译工程,编译通过后我们就可以愉快地用lua代码调用sayHello啦!
6,lua代码调用
MainScene.lua


local MainScene = class("MainScene", function()
    return display.newScene("MainScene")
end)

function MainScene:ctor()
    cc.MyClass:sayHello()
end

return MainScene