亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

台前县| 元氏县| 海口市| 阳新县| 开封县| 江源县| 慈利县| 肃宁县| 香格里拉县| 泾川县| 嵊泗县| 桑日县| 海林市| 邓州市| 敦煌市| 法库县| 商丘市| 同心县| 阿城市| 措美县| 普定县| 彭山县| 马关县| 蓬安县| 湖北省| 鄂伦春自治旗| 合山市| 从江县| 玉林市| 宣恩县| 芜湖市| 乌兰察布市| 永清县| 哈密市| 芦山县| 康保县| 富蕴县| 桦南县| 绵阳市| 寻甸| 神池县|