实际lua中的库是一个table,table中有不同的函数。比如string库是一个table,table中有不同的函数。
Lua库有两种:一种是内嵌库,一种是共享库。
共享库:
有一个lua本体,我用C写一个库,在lua中require("xxx")该文件。
内嵌库:
在lua内部用C代码加一个库。
两种库在写法上差不多,实际内嵌库是和lua一起打包编译,共享库是自己打包编译,lua在对其进行调用。

在lua源文件中添加一个文件testlib.c
库的实现:

将库加入到lua中:
找到linit.c文件:
首先要在lualib.h头文件中声名初始化函数的声明:

将库加入lua中:第一个参数是库名,第二个参数是库初始化函数。

实际lua库是一个table:


总结:

在函数调用时,写入值即可。如下:
会按顺序入栈

C函数处理完lua传过来的数据后,将结果入栈。return表示返回值ide个数,即需要的结果。在lua中用变量进行接收。




在C语言中使用处理Lua传过来数据的接口:

type_name与type_typename使用:


其他接口使用查看文档。LuatOS 文档
特别说一下:


返回肯定是一个整形
返回是整形或者浮点形。




参数数据实际都获得了,但是由于C语言字符串以'\0'结尾,所以后面的字符串没有显示,可以根据返回的字符串长度,继续从s后面读取,知道到达长度。


