91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

quick cocos2dx 3.3rc1 如何Lua調用自定義C++類(一)------ 生成橋接代碼

發布時間:2020-08-04 12:15:32 來源:網絡 閱讀:1532 作者:落魄碼農 欄目:游戲開發

    雖然網上很多關于Lua調用自定義C++類的文章,但不知道為什么,一到自己去實踐,總是遇見這樣那樣的問題,造成失敗。讓我都懷疑文章的正確性了。。。有些因為細節原因,而文章又沒提!踩了無數的坑,昨天終于成功了,今天迫不及待寫篇文章與大家分享!

    如果對lua與C++如何交互不怎么清楚的朋友,可以看下這篇文章:

    【木頭Cocos2d-x 026】Lua篇(第01章):讓Lua和C++牽手

 

    如果版本不是3.x的,用以前版本的可以看下這篇文章:

    Cocos2d-x下Lua調用自定義C++類和函數的最佳實踐

 

    這篇文章詳細介紹了幾種lua調用C++的方法,最終說明了cocos2dx 3.x 用bindings-generator腳本,是多么的方便,我也感同身受,因為之前還用tolua++試過調用,還是以失敗告終。。。quick cocos2dx 3.3rc1 如何Lua調用自定義C++類(一)------ 生成橋接代碼

    雖然上面那篇文章說的很詳細,但是我親身經歷測試成功,還是簡單說下,讓大家看得簡單明了!!!

    在這之前還是要說下,除了安裝好Python之外,需要進行2個步驟:

    1.安裝Pyymal

    http://pyyaml.org/download/pyyaml/PyYAML-3.10.win32-py2.7.exe 

    2.下載pyCheetah,并解壓到C:\Python27\Lib\site-packages

    https://raw.github.com/dumganhar/my_old_cocos2d-x_backup/download/downloads/Cheetah.zip

    還有NDK版本要r9d版本!!!!!!

 

    官方文檔:如何使用 bindings-generator 自動生成 lua綁定

    以官方文檔CustomClass類為例,步驟如下:

    以下說的frameworks都是項目下的frameworks,不是quick下的!!!!

    1.在frameworks/runtime-src/Classes/目錄下,創建CustomClass類

    frameworks/runtime-src/Classes/CustomClass.h

// CustomClass.h
#ifndef __CUSTOM__CLASS
#define __CUSTOM__CLASS
#include "cocos2d.h"
class CustomClass : public cocos2d::Ref
{
public:
    CustomClass();
    ~CustomClass();
    bool init();
    CREATE_FUNC(CustomClass); 
    int foo(int i);
};
#endif // __CUSTOM__CLASS

    frameworks/runtime-src/Classes/CustomClass.cpp

#include "CustomClass.h"
CustomClass::CustomClass()
{
}
CustomClass::~CustomClass()
{
}
bool CustomClass::init()
{
    return true;
}
int CustomClass::foo(int i)
{
  return i + 100;
}

    2.在frameworks/cocos2d-x/tools/tolua/目錄下,創建cocos2dx_custom.ini文件

[cocos2dx_custom]
prefix = cocos2dx_custom
target_namespace = cc
android_headers = -I%(androidndkdir)s/platforms/android-14/arch-arm/usr/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.7/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.8/include
android_flags = -D_SIZE_T_DEFINED_
clang_headers = -I%(clangllvmdir)s/lib/clang/3.3/include 
clang_flags = -nostdinc -x c++ -std=c++11 -U __SSE__
cocos_headers = -I%(cocosdir)s -I%(cocosdir)s/cocos -I%(cocosdir)s/cocos/platform/android
cocos_flags = -DANDROID
cxxgenerator_headers =
extra_arguments = %(android_headers)s %(clang_headers)s %(cxxgenerator_headers)s %(cocos_headers)s %(android_flags)s %(clang_flags)s %(cocos_flags)s %(extra_flags)s
headers = %(cocosdir)s/../runtime-src/Classes/CustomClass.h
classes = CustomClass
skip =
rename_functions =
rename_classes =
remove_prefix =
classes_have_no_parents =
base_classes_to_skip =
abstract_classes =
script_control_cpp = no

     這是最簡單的ini文件了,看起來很多,其實最主要的是修改以下幾句,其他幾乎不用改變。

[cocos2dx_custom]
prefix = cocos2dx_custom
target_namespace = cc
headers = %(cocosdir)s/../runtime-src/Classes/CustomClass.h
classes = CustomClass

     具體含義看官方文檔吧,這里就不說了,這里要說的是[cocos2dx_custom],必須與文件名字一樣,否則運行腳本的時候,會報錯!反正最好和文件名字一樣,就不用再去踩坑了!prefix這個也用文件名字吧~

    3.在frameworks/cocos2d-x/tools/tolua/目錄下,修改腳本

    我把genbindings.py拷貝了一份把名字改成genbindings_custom.py,修改以下代碼:

cmd_args = {'cocos2dx_custom.ini' :('cocos2dx_custom', 'lua_cocos2dx_custom_auto') }

    這樣就只會編譯這個一個文件,節約時間!!!

    4.在frameworks/cocos2d-x/tools/tolua/目錄下,運行腳本

    在frameworks/cocos2d-x/tools/tolua/目錄下運行cmd,然后輸入命令 Python genbindings_custom.py

成功執行genbindings.py腳本后,會在frameworks/cocos2d-x/cocos/scripting/lua-bindings/auto/目錄下,生成以下2個文件

quick cocos2dx 3.3rc1 如何Lua調用自定義C++類(一)------ 生成橋接代碼

    到此我們所需要的文件都齊全了!!!!!!!

    關于如何調用在下篇文章講解!

    如有不足之處,請大家指出,一起交流成長!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

博白县| 贵定县| 台北县| 乐业县| 仁布县| 德江县| 德安县| 辽中县| 长岛县| 鹿泉市| 乐业县| 龙江县| 全州县| 馆陶县| 中山市| 贡山| 犍为县| 永安市| 庆阳市| 呼伦贝尔市| 汝阳县| 梁河县| 临洮县| 墨江| 府谷县| 拜泉县| 深泽县| 苏州市| 嘉义市| 崇州市| 濮阳县| 盘山县| 怀仁县| 海淀区| 周至县| 嵩明县| 灌南县| 鹤庆县| 鞍山市| 雅安市| 成安县|