弄了半天終于搞定了,網上有很多相似的文章,但可能由于我基礎不好,總是出錯,最後搞定了。
參考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不是同一目錄,可以參考我之前一篇文章:)http://blog.csdn.net/bark2003/article/details/20776553
在lua中測試一下
local aaa= MyClass:f(3)
CCLuaLog(aaa)
結果顯示正常,終于通了。。
轉載請保留原文位址http://blog.csdn.net/bark2003/article/details/20780653