lua C语言api学习2 在C语言中使用lua语言

embedded/2025/3/15 13:11:56/

本文介绍如何在C语言中使用Lua语言.

luaL_dostring_1">1 使用luaL_dostring函数

在C语言中可以容易执行lua脚本,可以将lua脚本直接嵌入到C语言程序中,再使用luaL_dostring进行调用。具体示例如下

//02使用luaL_dostring函数
#include <stdio.h>
#include <stdlib.h>// Lua数据类型与函数接口
#include "lua.h" 
// Lua与C交互辅助函数接口    
#include "lauxlib.h" 
// Lua标准库打开接口
#include "lualib.h"  int main()
{// 创建一个新的lua状态lua_State* L = luaL_newstate();           // 打开标准库luaL_openlibs(L);  // 解析并执行一行Lua脚本字符串,字符串luaL_dostring(L, "print('你好')");//执行多次运算luaL_dostring(L, "a=3");luaL_dostring(L, "print(a)");//可以一次性执行多行lua脚本luaL_dostring(L, "--输出1-10for i=1,10 doprint(i)end");// 关闭Lua状态lua_close(L);                             return 0;
}

运行结果如下
在这里插入图片描述

luaL_dofilelua_43">2 使用luaL_dofile函数调用外部lua脚本

luaL_dofile的用法和luaL_dostring用法类似,不同的是luaL_dofile调用的是外部lua脚本,使用也非常简单,具体如下

//03使用luaL_dofile调用外部lua程序文件
#include <stdio.h>
#include <stdlib.h>// Lua数据类型与函数接口
#include "lua.h" 
// Lua与C交互辅助函数接口    
#include "lauxlib.h" 
// Lua标准库打开接口
#include "lualib.h"  int main()
{// 创建Lua状态lua_State* L = luaL_newstate();           // 打开标准库luaL_openlibs(L);   // 加载并运行当前目录下列的a.lua脚本并luaL_dofile(L,"a.lua");// 关闭Lua线程lua_close(L);                             return 0;
}

外部lua文件如下:

lua">--这是一个lua程序function test(x)return x^2
endprint("你好,世界")
a=3
print(a)
for i=1,10 doprint(i)
endprint(test(3))

运行结果如下
在这里插入图片描述


http://www.ppmy.cn/embedded/172768.html

相关文章

SQLMesh宏操作符深度解析:掌握@star与@GENERATE_SURROGATE_KEY实战技巧

引言&#xff1a;解锁SQLMesh的动态查询能力 在复杂的数据处理场景中&#xff0c;手动编写重复性SQL代码不仅效率低下&#xff0c;还难以维护。SQLMesh作为新一代数据库中间件&#xff0c;通过其强大的宏系统赋予开发者编程式构建查询的能力。本文将重点解析两个核心操作符——…

Unity大型游戏开发全流程指南

一、开发流程与核心步骤 1. 项目规划与设计阶段 需求分析 明确游戏类型&#xff08;MMORPG/开放世界/竞技等&#xff09;、核心玩法&#xff08;战斗/建造/社交&#xff09;、目标平台&#xff08;PC/移动/主机&#xff09;示例&#xff1a;MMORPG需规划角色成长树、副本Boss…

DeepSeek R1-32B医疗大模型的完整微调实战分析(全码版)

DeepSeek R1-32B微调实战指南 ├── 1. 环境准备 │ ├── 1.1 硬件配置 │ │ ├─ 全参数微调:4*A100 80GB │ │ └─ LoRA微调:单卡24GB │ ├── 1.2 软件依赖 │ │ ├─ PyTorch 2.1.2+CUDA │ │ └─ Unsloth/ColossalAI │ └── 1.3 模…

江科大51单片机笔记【16】AD/DA转换(下)

写在前言 此为博主自学江科大51单片机&#xff08;B站&#xff09;的笔记&#xff0c;方便后续重温知识 在后面的章节中&#xff0c;为了防止篇幅过长和易于查找&#xff0c;我把一个小节分成两部分来发&#xff0c;上章节主要是关于本节课的硬件介绍、电路图、原理图等理论知识…

汉朔科技业绩高增长:市占率国内外遥遥领先,核心技术创新强劲

《港湾商业观察》王璐 3月11日&#xff0c;汉朔科技股份有限公司&#xff08;以下简称&#xff0c;汉朔科技&#xff0c;301275.SZ&#xff09;正式在创业板挂牌上市&#xff0c;当天股价收盘上涨143.35%。 作为电子价签领域的全球龙头企业&#xff0c;汉朔科技无论是市场占有…

mac用docker跑sql server

网上的各个文章跑下来都有一些问题&#xff0c;记录一下我成功跑起来的过程。 省略Docker安装 修改docker源&#xff1a; {"builder": {"gc": {"defaultKeepStorage": "20GB","enabled": true}},"experimental"…

Windows10安装Rust 和ZED(失败)

安装Rust Rust直接从官网下载安装文件&#xff1a;Install Rust - Rust Programming Language 下载&#xff0c;运行安装即可。 安装好提示&#xff1a; Rust is installed now. Great! To get started you may need to restart your current shell. This would reload it…

UG的一些操作步骤(自用笔记2)

目录 1.曲面操作和编辑 2.工程图 3.尺寸标注 4.钣金基本特征 5.钣金高级特征 6.建立有限元模型 7.模型编辑与后处理 8.机构分析基础 9.模型准备与运动分析 10.运动分析总结 1.曲面操作和编辑 1.曲面操作&#xff1a; 偏置曲面&#xff1a;菜单——插入——偏置/缩放…