lua 基础使用

lua简介

轻量脚本语言,基于C语言实现,为嵌入式应用程序而设计,使扩展和定制功能变得更灵活。

开发环境搭建

基于Linux进行lua安装

下载lua C源码包
cd lua-5.3.0
make linux test
make install

helloworld.lua

#!/usr/local/bin/lua
print("Hello World!")

执行文件:./helloworld.lua(若是没有指定源#!/usr/local/bin/lua, 使用lua helloworld.lua执行也是OK的)

输出:Hello World!

Lua概念

lua C包实现方法与使用

基于C语言实现lua扩展包

static int function_test(lua_State* L)
{
	int value1 = luaL_checknumber(L, 1);
	short value2 = luaL_checknumber(L, 2);//或者luaL_tonumber(L, 2);
	char* value3 = luaL_tostring(L, 3);
	printf("%d, %d, %s \n", value1, value2, value3);
	return 1;	
}
//注册函数结构体数组类型
static const struct luaL_Reg mt_lib[]=
{
	{"send", function_test(lua_State*)},
	{NULL, NULL} //必须以一对name和function皆为NULL结束
}
luaopen_luacso(lua_State* L) //设置基础标准库
{
	luaL_register(L, "luacso", mt_lib);//注册函数
	return 1;
}

C代码执行lua脚本

lua_State* L = luaL_newstate() //创造新的lua状态机
luaL_openlibs(L) //打开C API标准库
lua_register(L, "setmode", SetBandMode)//将函数设置到全局name中,(1.将函数压栈;2.从堆栈中弹出新值并设置到全局name)
luaL_dofile(lL, "Script_name.lua")//加载并运行指定的脚本文件
lua_close(L) //释放lua状态机资源
//其他lua接口
lua_tostring(lua_State* L, int ErrorCode)//将给定索引的Lua值转换为一个C字符串
lua_tonumber(lua_State *L, int index)//将索引处的lua值转换为C类型参数

C函数

static int SetBandMode(lua_State* L)
{
	int n = lua_getopt(L);
	char* dataString = (char*)lua_tostring(L,1);//取出L中的第一个元素
	
}

lua使用require实现so库加载调用

#!/usr/local/bin/lua
setmode({\"channelMode\":1});
package.cpath = '/data/Test/lua/?.so;'
local luacso = require("luacso") ///相当于调用C API 中的luaL_requiref()函数进行加载库
luacso.send(1,2,singaljson) ///signalJSON为JSON数据列表

参考链接

菜鸟教程 - lua教程:https://www.runoob.com/lua/lua-tutorial.html
lua5.3参考手册:https://www.runoob.com/manual/lua53doc/manual.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值