cocos2dx3.17.2 tolua c++導出lua詳細步驟

在使用tolua導出c++類的過程中遇到了很多坑,現在詳細記錄下來,免得在採坑。

cocos前期準備:

  • windows10系統
  • 下載coco2dx源碼,我下載的是3.17.2,這個在官網下載即可。配置cocos環境,此步驟後檢查cocos環境變量是否已經配置好,包括:COCOS_CONSOLE_ROOT,COCOS_TEMPLATES_ROOT,COCOS_X_ROOT
  • 使用cocos命令創建lua項目,這個網上有很多指導,此處不說明。我的創建的項目名是cocos-lua-pro01。
  • 編寫c++類,類文件名是ManagerMainExport.h,我的是如下示例:
class ManagerSubExport 
{
public:
	static ManagerSubExport* create();

	//獲取並解析啓動運行參數
	static std::string getStartUpJsonParams();

	//連接ip和port
	virtual bool startTcp(char* ip, int port) { return false; };

	//停止並釋放tcp
	virtual bool stopTcp() { return false; };

	//發送data到sock
	virtual bool sendMsgToMain(char* data, int len) { return false; };

	//註冊lua回調,接收緩存中有數據時會調用回調
	virtual void registerLuaCallback(int recvFun, int exitFun) {};

	virtual void setUId(int uId) {};

	virtual void retainInstance() {};

	virtual void releaseInstance() {};
};

正式開始tolua使用:

tolua環境準備:

  • 打開項目cocos-lua-pro01\frameworks\cocos2d-x\tools\tolua\README.mdown文檔:

我的是在windows10下,因此參考On Windows欄說明,總結上述文檔的說明,依次需要安裝一下環境:

  1. 下載安裝android-ndk-r16,官網下載:https://developer.android.google.cn/ndk/downloads/older_releases.html,選擇windows 32位的。創建並配置環境變量NDK_ROOT,值D:\NDK\android-ndk-r16b-windows-x86\android-ndk-r16b
    Windows 32 位 android-ndk-r16b-windows-x86.zip
  2. 下載並安裝Python2.7.3,直接訪問文檔中的地址下載。安裝完成後,需要將Python的路徑添加到系統環境變量PATH中。
  3. 安裝Python的pip包,Python2.7需要另外安裝pip,參考https://blog.csdn.net/zz153417230/article/details/80226471完成安裝,將C:\Python27\Scripts添加到環境變量PATH。
  4. 下載安裝pyyaml,訪問文檔中路徑直接下載,默認安裝即可。
  5. 下載Cheetah,訪問文檔路徑下載,解壓,打開cmd,進入解壓目錄Cheetah-2.4.4\Cheetah-2.4.4,依次執行命令‘python setup.py build` 和 'python setup.py install'。成功後,使用會出現警告:“You don't have the C version of NameMapper installed!”,參考https://blog.csdn.net/magicharvey/article/details/38302217文檔得以解決:訪問https://pypi.org/project/Cheetah3/3.2.4/#files下載Cheetah3-3.2.4-cp27-cp27m-win32.whl,打開cmd使用命令“pip install Cheetah3-3.2.4-cp27-cp27m-win32.whl”完成安裝後,不會再出現警告。

開始使用tolua編譯導出c++類:

  1. 進入項目tulua路徑:E:\work\cocos-lua-pro01\frameworks\cocos2d-x\tools\tolua,複製備份cocos2dx.ini和genbindings.py,重命名MutiWinManager.ini和genbindings_myclass.py(名字可隨便取)。

打開ini進行編輯:下圖4處紅色方框的內容需要修改,其餘不變,

第1、2處和ini文件名相同,文件名也可和c++類名相同,第3處填寫需要導出的c++類文檔路徑,多個文件用空格隔開,第4處填寫需要導出的類名(有時候文件名和類名不同),之後導出第4處的類,多個類用空格隔開。

 打開py文件編輯:下圖重要的2處紅色方框內的內容比較重要,第1處是導出成功後生成的h和cpp文件存放的路徑,我沒有修改它,第2處需要修改,改成自己的ini文件名,我的是MutiWinManager.ini,後面括號中的內容,前面的是ini文件上圖第1處的值(必須與上面第1處值相同),後面是生成的h和cpp文件名(可修改)。

    2. 編輯完成後,打開cmd,進入ini目錄:E:\work\cocos-lua-pro01\frameworks\cocos2d-x\tools\tolua,執行命令“python genbindings_myclass.py”(根據你自己重命名的py調整命令)。成功後即在上圖第1處的路徑下生成對應的h和cpp文件。

 

 

至此,所有步驟已全部完成,路途還算順利。但是但是我被1個坑坑了2天,網上好多博客都沒有說明這個問題,可能他們都沒有遇到過吧,但是我就遇到了,而且毫無辦法,導致我一直導出失敗,完全找不到原因,又搜索不到資料,環境安裝了好幾遍都不想。md!現在我記錄下來,以免大家再遇到: 

坑在windows10默認安裝路徑下都有個“Program Files”,所有我最開始就將NDK放在D:\Program Files下,然後就開始了慢慢長夜導出失敗的路途上越走越遠,md!後來通過閱讀generator.py代碼(genbindings_myclass.py最終調用E:\work\cocos-lua-pro01\frameworks\cocos2d-x\tools\bindings-generatorgenerator.py來導出的),發現它是用空格來分割每個配置參數的,我就隱隱約約感覺到坑似乎在這裏。然後就將NDK移出了Program Files,直接放到根目錄下,沒有空格,然後再次導出,mdmdmdmdmd,一次就成功啦!!!!我恍恍惚惚恍恍惚惚恍恍惚惚。。。。。。。

希望大家再也不要遇到這個坑了。原理 Program Files可以原理太多坑。

感謝感謝!遇事不放棄,總會找到解決方案的,關鍵時刻還是要仔細。加油!

附帶給出部分環境安裝包吧,怕大家找不到:

鏈接:https://pan.baidu.com/s/1zRVYLJyoyDTKmzPS7rKuYQ 
提取碼:jwxg

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章