lua 5 2的 luaL newlib 的用法

2021-07-22 12:00:49 字數 695 閱讀 9671

對於lua 5.2, lua 5.2是2023年發布的。國內使用5.1的居多。

lual_register 和lual_openlibs。這些功能大多數都廢棄了

lual_register這個註冊c++的庫函式,功能被廢棄了。新的api lual_newlib 網上的資料不多。

下面給出乙個使用 lual_newlib的例子來呼叫c++ 函式

//this is c++ code

#include "stdafx.h"

#include "math.h"

extern "c" ;

//this is callback function for the lua

static int getsin(lua_state* luastate)

static const lual_reg testlib = ,

};

int luaopen

getlib(lua_state* l)

int main(int argc, _tchar* argv)

cfg.lua的**在這裡

function foo(x, y)

--return (x^2 * math.sin(y))/(1 - x)

--return x + y

return sinlib.getsin(x) + y

end

lua5 2模組註冊

lua 5.2不鼓勵使用lual register把模組註冊到全域性域,而是使用lual newlib。我們首先看下lual newlib,它是乙個巨集,如下 define lual newlib l,l lual newlibtable l,l lual setfuncs l,l,0 lual n...

lua5 2 帶你理解 ENV和 G

5.1之前,全域性變數儲存在 g這個table中,這樣的操作 a 1 相當於 g a 1 但在5.2之後,引入了 env叫做環境,與 g全域性變數表產生了一些混淆,需要從原理上做乙個理解。在5.2中,操作a 1 相當於 env a 1 這是乙個最基礎的認知改變,其次要格外注意 env不是全域性變數,...

對lua中 ENV表的理解 lua5 2版本以後

當我拿到 env表的時候,會去想這個 env表是幹什麼用的?首先看如下 1 print env 0x1d005f0 2print g 0x1d005f0 viewcode 看了上面的 就感覺 env表不就是 g表嗎?但 env表是不是全域性的呢?我又列印了 g表的內容 1 for k v in pa...