c语言与Lua通信

c语言与Lua通信

1.C语言调用lua函数(ubuntu,栈方法)
参考:https://blog.csdn.net/liao392781/article/details/97132380
https://www.cnblogs.com/wolfred7464/p/3829790.html
c代码:
在这里插入图片描述
在这里插入图片描述

Ps:暂时只会操作,Int类型数据和字符串,
操作lua表需要,链接头文件,暂时没有链接出来
lua代码:
在这里插入图片描述

中间遇到的问题:
1.gcc编译错误,找不到lua库.
解决方法:
原来在ubuntu下lua的安装包,binary和dev是分开装的,找了一下,需要安装另外一个包liblua5.1-dev
执行:sudo apt-get install liblua5.1-dev
先将它安装下来,因为等会需要用-I指定lua的动态库,所以先找到lua.h放在了哪里
执行:sudo updatedb
locate lua.h
找到路径
最后编译: gcc xxx.c -o xxx -I /usr/include/lua5.1 -llua5.1
Gcc解释:
-I : 指定头文件所在的路径
-llua5.1:指定使用lua5.1这个库,也可以是一个包含很多头文件的文件夹

2.lua调用c语言(获取C语言的字符串,栈方法)
c代码:
在这里插入图片描述

Lua:
在这里插入图片描述

Makefile:(先要生成动态库)
在这里插入图片描述

执行:lua hello.lua
结果:

在这里插入图片描述

3.lua获取C输出信息(popen 管道方法)

Lua代码:(可以将可执行文件输出的数据通过管道,获取到lua代码中)

在luci平台上,不能直接读全部,要一行一行的读才能读出来

在这里插入图片描述
在这里插入图片描述

shell命令执行:通过luci.util.exec(cmd),可执行shell命令,如:ls, mkdir等等