lua與C 相互呼叫

2021-06-19 08:41:28 字數 1622 閱讀 6128

新建乙個工程,將編譯出來的lua.lib包含進來,就可以開始用了

1、c++ 呼叫 lua

編寫**如下:

#include using namespace std;

#pragma comment(lib, "lua.lib")

extern "c"

void main()

int nret = lual_loadfile(l, "luatest.lua"); // 載入測試檔案

if (nret != 0)

lua_pcall(l, 0, lua_multret, 0); // 初始化函式呼叫

// 開始呼叫lua函式

lua_getglobal(l, "luafun"); // 在全域性表中查詢luafun函式

lua_pushinteger(l, 5); // 傳乙個引數5

nret = lua_pcall(l, 1, 1, 0); // 告訴lua我要傳乙個引數給他(第乙個1),他要回乙個結果給我(第二個1)

if (nret != 0)

int nvalue = lua_tointeger(l, -1); // 獲取返回引數

cout << nvalue << endl;

}

在luatest.lua中,我們的**是這樣的

function luafun(n)

return n * n

end

這個程式最終會輸出25

2、lua呼叫c++

#include using namespace std;

#pragma comment(lib, "lua.lib")

extern "c"

int cppfun(lua_state* l)

void main()

int nret = lual_loadfile(l, "luatest.lua"); // 載入測試檔案

if (nret != 0)

lua_pcall(l, 0, lua_multret, 0); // 初始化函式呼叫

lua_register(l, "cppfun", &cppfun); // 註冊乙個lua可以呼叫的c++函式

// 開始呼叫lua函式

lua_getglobal(l, "luafun"); // 在全域性表中查詢luafun函式

lua_pcall(l, 0, 0, 0);

}

在lua中我們的**是這樣的

function luafun()

cppfun("lua call cpp") // 呼叫註冊過的c++函式

end

這個程式最後會輸出lua call c

lua和c 相互呼叫

include include include include include extern c lua state l int luaadd lua state l,int x,int y extern int cl domylua lua state l extern int cl drawte...

使用tolua 實現C 與LUA相互呼叫

lua是一種目前很流行的高效精簡的指令碼語言。lua乙個特點是比較方便的與c通訊。然而要在指令碼中使用c 類使用基本的lua方法還是比較麻煩,純手工暴露乙個類的介面到lua工作量還是很大的,而且都是一些簡單的重複勞動。好在有tolua 這個工具,可以讓程式設計師從簡單的重複勞動解脫出來。tolua ...

lua與C C 的相互呼叫(一)

今天剛剛接觸lua,c c 程式怎麼呼叫lua呢?配置 2.vs 2015 新建乙個工程,名為lua。選擇c win32空專案,應用程式型別選擇靜態庫。5.開始編譯注意選擇debug 6.編譯好之後去工程所在的資料夾找lua.lib檔案 新建乙個簡單的程式 1.建立乙個c win32控制台應用程式的...