xlua擴充套件第三方庫 轉)

2021-10-10 19:32:57 字數 2631 閱讀 6826

隨著xlua的開源,其在專案中的使用也越來越廣泛。遊戲開發中我們經常會使用第三方庫如,json解析,網路協議等等,目前xlua目前內建的擴充套件庫:

1、針對luajit的64位整數支援;

2、函式呼叫耗時以及記憶體洩漏定位工具;

3、用於支援zerobranestudio的luasocket庫;

4、tdr 4 lua;

隨著使用專案的增加以及專案使用的深入程度,僅有這幾個擴充套件已經沒法滿足專案組了,而由於各個專案對擴充套件差異化比較大,以及手機平台對安裝包大小的敏感,xlua是無法通過預整合去滿足這些需求,結合官網的例程記錄下自己擴充套件的步驟以及遇到的錯誤

1、安裝cmake(根據自己電腦配置選擇合適的版本)

cmake安裝之後最好重啟下電腦,即便環境變數已經配置好,但是有時還是會不識別

根據例子修改cmakelists.txt檔案,接入擴充套件

把xlua的c原始碼包解壓到你unity工程的assets同級目錄下。

2、在cmakelists.txt加入擴充套件

#begin lua-rapidjsonset (rapidjson_src lua-rapidjson/source/rapidjson.cpp)set_property(source $

property compile_definitions

lua_lib

)

set (thirdpart_src $ $)

#end lua-rapidjson

3、修改執行bat檔案

比如windows 64位lua53版本是make_win64_lua53.bat,android的luajit版本是make_android_luajit.sh,要編譯哪個版本就執行相應的指令碼即可。

執行完編譯指令碼會自動拷貝到plugin_lua53或者plugin_luajit目錄,前者是lua53版本放置路徑,後者是luajit。

配套的android指令碼是在linux下使用的,指令碼開頭的ndk路徑要根據實際情況修改。雙擊執行結果如下圖:

然後把生成的plugin_lua53/plugins/x86_64/xlua.dll 直接覆蓋unity專案的assets/plugins/x86_64/xlua.dll

4、c#整合

所有lua的c擴充套件庫都會提供個luaopen_***的函式,***是動態庫的名字,比如lua-rapidjson庫該函式是luaopen_rapidjson,這類函式由lua虛擬機器在載入動態庫時自動呼叫,而在手機平台,由於ios的限制我們載入不了動態庫,而是直接編譯程序式裡頭。

為此,xlua提供了乙個api來替代這功能(luaenv的成員方法):

public void addbuildin(string name, luacsfunction initer)

name:buildin模組的名字,require時輸入的引數;

initer:初始化函式,原型是這樣的public delegate int lua_csfunction(intptr l),必須是靜態函式,而且帶monopinvokecallbackattribute屬性修飾,這個api會檢查這兩個條件。

我們以luaopen_rapidjson的呼叫來看看怎麼使用。

擴充套件luadll.lua類,用pinvoke把luaopen_rapidjson匯出到c#,然後寫乙個符合lua_csfunction定義的靜態函式,你可以在裡頭做寫初始化工作,比如luaopen_rapidjson的呼叫,以下是完整**:

namespace luadll}}

然後在lua虛擬機器建立時呼叫addbuildin:

luaenv.addbuildin("rapidjson", luadll.lua.loadrapidjson);

例子測試**

local rapidjson = require('rapidjson')local t = rapidjson.decode('')print(t.a)t.a = 456

local s = rapidjson.encode(t)

print('json', s)

當以上步驟都完成時重啟unity報錯了,報錯資訊如下:

php 第三方擴充套件

到本地,解壓。安裝依賴 1.libmemcached 1.0.8 2.libmemcached devel 1.0.8 3.1 2 依賴3 libevent2 2.0.21 4.1 2 依賴4 cyrus sasl devel 2.1.23 5.4依賴cyrus sasl gssapi,cyrus ...

Python之安裝第三方擴充套件庫

如果你知道你要找的庫的名字,那麼只需要在右上角搜尋欄查詢即可。1 pip安裝擴充套件庫 1 安裝最新版本的擴充套件庫 cmd pip install django 2 安裝指定版本的擴充套件庫 cmd pip install django 1.9.7 3 使用 pip 檢視當前安裝的庫 cmd pi...

PyThon第三方庫

本文 自 戀花蝶的部落格 今天公司停電,沒上班。跑上來更新個部落格,跟大家分享一下我常用的幾個第三方 python 庫。python 語言之所以能夠如此流行,除了本身內建許多程式庫來保障快速開發之外,目不睱接的第三方庫也是一大主因。結合我目前的工作 網遊開發 我常用的幾個第三方庫如下 wxpytho...