現在很多伺服器研發為了節約開發成本,邏輯業務採用lua編寫,下面講講工作上遇到的一些問題,記錄方便以後查閱。
我們知道用lua寫癩子胡牌演算法可能執行不是很高效,當你有現成的麻將庫,是不是可以繫結給lua使用呢,答案肯定。
胡牌演算法,主要是傳遞陣列,下面就實現乙個lua傳遞陣列到c++,之後就能使用胡牌演算法進行邏輯處理,得到結果傳回lua。
#include "external/lua/include/lua.hpp"
#include "external/clog/log.h"
#include #include "shuffle.h"
static int c_shuffle(lua_state* l)
int *pnew = new int[n];
for (int i = 1; i <= n; ++i)
for (int i = 1; i <= n; ++i)
delete pnew;
return 1;
}extern "c" ,,};
#if lua_version_num == 501
lua_newtable(l);
lual_register(l, null, reg);
#elif lua_version_num == 502
lual_checkversion(l);
lual_newlib(l, reg);
#endif
return 1;
}}
local shuffle = require("c_shuffle")
local test =
local result = shuffle.shuffle(test)
for k,v in ipairs(result) do
logerror("k, v", k, v)
end
下面來講解下:這段程式的意思是,lua table陣列資料傳遞到c++中,資料*2,返回給lua顯示
int t = lua_type(l, i); //獲取棧上資料型別
lua呼叫c函式
最近在進入lua程式設計的狀態,一度令我困惑的是,lua提供的功能少的可憐,跟自備電池的python相比,可說是簡陋了。連table的列印,都需要自己實現,也因此有了一打的第三方方案。後來我想明白了,以lua和c如此緊密的關係,只需要建立lua的binding,那麼豐富而效能強大的c庫資源完全可以為...
lua呼叫c函式
lua可以呼叫c函式的能力將極大的提高lua的可擴充套件性和可用性。對於有些和作業系統相關的功能,或者是對效率要求較高的模組,我們完全可以通過c函式來實現,之後再通過lua呼叫指定的c函式。對於那些可被lua呼叫的c函式而言,其介面必須遵循lua要求的形式,即 typedef int lua cfu...
lua呼叫C函式
lua採取的是利用棧進行互動,利用各種lua push 將不同的值壓入棧中,然後呼叫lua指令碼時自然會退棧取出引數執行,對於lua的虛擬機器來說,就像是發生了一次正常的函式呼叫。這裡採用的棧是lua棧,因為若是c棧的話呼叫lua的c api就會出錯了。需要注意的是,lua棧狀態需要自己進行維護,若...