C語言和Lua互動 七

2021-07-28 06:07:51 字數 1030 閱讀 3345

當用c函式擴充套件lua時,最好就是將**設計為乙個c模組。

直接上**:

#include 

#include

#include

#include "lua.h"

#include "lauxlib.h"

#include "lualib.h"

//待註冊的c函式,和上一節相同

static

int myadd(lua_state* l)

static

int mysin(lua_state *l)

//lual_reg結構體

//最後乙個元素的兩個欄位均為null,表示lua註冊函式已經到達陣列的末尾。

static

const

struct lual_reg mylib = ,//第乙個欄位為字串,在註冊時用於通知lua該函式的名字。

,};//匯出函式庫

//函式名必須為luaopen_***,其中***表示library名稱。lua**require "***"對應。

int luaopen_mylib(lua_state *l)

編譯**,生成動態鏈結庫(linux的so,或windows的dll)

gcc mylib.c -fpic -shared -o mylib.so
將包生成庫檔案,拷貝到lua**所在的當前目錄,或者是lua_cpath環境變數所指向的目錄,以便於lua解析器可以正確定位到他們。

在mylib.so同目錄新增檔案test.lua

local mylib = require("mylib")

local

sin = mylib.mysin(2);

local num = mylib.myadd(123,44)

print(sin)

print(num)

執行lua**

lua test.lua

C語言和Lua互動 三

新建config.lua配置檔案,檔案內容 background 同目錄新建test.c檔案 include include include lua.h include lauxlib.h include lualib.h lua state l null 獲取table對應key的值,假設tabl...

Lua和C語言的互動(一)

lua生來就是為了和c互動的,因此使用c擴充套件lua或者將lua嵌入到c當中都是非常流行的做法。要想理解c和lua的互動方式,首先要回顧一下c語言是如何處理函式引數的。c函式和引數 大家知道c語言是用彙編實現的,在組合語言中可沒有函式的概念,與函式對應的是叫做子過程的東西,子過程就是一段指令,乙個...

Lua和C語言的互動(一)

lua生來就是為了和c互動的,因此使用c擴充套件lua或者將lua嵌入到c當中都是非常流行的做法。要想理解c和lua的互動方式,首先要回顧一下c語言是如何處理函式引數的。c函式和引數 大家知道c語言是用彙編實現的,在組合語言中可沒有函式的概念,與函式對應的是叫做子過程的東西,子過程就是一段指令,乙個...