本文参考官方教程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