1. 程式人生 > >Lua筆記——8.Lua & C

Lua筆記——8.Lua & C

函數 程序 頭文件 c++中使用lua 之間 行數 ber amp class

Lua是一門嵌入式語言,提供了完備的 C API 方便 Lua 代碼和其他宿主程序相互調用來擴展程序功能。在C中嵌入Lua腳本可以讓用戶在不重新編譯代碼的情況下只修改Lua代碼來更新程序。在Lua中調用C函數則可以提高程序的運行效率。

  • 操作環境:根據自己使用的環境來配置lua.(這裏使用Win + VS,Lua 使用5.3版本)

  • 理解C API:Lua和C交互的部分稱為C API。C API是一個C代碼與Lua進行交互的函數集。在C/C++中使用Lua C API 時,需要引入的Lua頭文件:
    1. lua.h:主要包含Lua的基礎函數,以 lua_ 開頭
    2. lauxlib.h:(lua auxiliary library 即lauxlib)主要包含Lua的輔助函數,以 luaL_ 開頭
    3. lualib.h:主要包含Lua打開內置庫的函數
  • 理解Lua堆棧:Lua和C之間通過一個抽象的Lua棧(lua_State *L)來進行數據交換,Lua和C之間的相互調用,即是通過Lua C API 來對Lua棧進行操作。
    1. Lua代碼中,嚴格遵守Lua棧的LIFO原則,只能操作棧頂元素
    2. C代碼中,可以操作Lua棧中任意元素,即可以在棧的任意位置刪除和插入元素
    3. Lua棧中可以存放各種類型的變量,例如number、string、函數、線程等

C調用Lua

在C代碼中調用Lua的基本流程為:

  1. 引入Lua頭文件
  2. 創建Lua棧
  3. 打開所需的Lua庫
  4. 加載Lua代碼
  5. 執行Lua代碼
  6. 獲取Lua代碼執行結果
  7. 關閉Lua棧

Lua調用C

通過在C中註冊函數給lua調用

封裝成c動態鏈接庫,在lua中require

在LuaJIT裏面可以使用ffi高性能的調用C

REF

博客:

https://www.jb51.net/article/132851.htm

https://blog.csdn.net/alexwoo0501/article/details/50916037

Lua筆記——8.Lua & C