当前位置: 首页 > news >正文

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

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

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-10
		for i=1,10 do
			print(i)
		end
	");
    // 关闭Lua状态
    lua_close(L);                             
    return 0;
}

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

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程序

function test(x)
	return x^2
end

print("你好,世界")
a=3
print(a)
for i=1,10 do
	print(i)
end

print(test(3))

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

http://www.dtcms.com/a/68094.html

相关文章:

  • 【eNSP实战】三层交换机使用ACL实现网络安全
  • 多功能网络工具,解锁网络深度分析与便捷管理
  • Qt项目中集成第三方模块的.pri文件
  • 【Linux 内核 | 操作系统 | 内核编译】内核编译中与锁调试相关的设置有哪一些?内核 Debug 选项中 LockDep 和其他锁调试选项详解
  • QT基础十四、绘图
  • 微信开发者工具内建终端使用不了npm,但是cmd可以
  • 在windows10系统上安装docker,然后在容器中运行GPU版本的Pytorch,并使用vscode连接该容器
  • 《C++ Primer》学习笔记(三)
  • 【QT5 Widgets示例】Model/View编程初探
  • 【蓝桥杯集训·每日一题2025】 AcWing 4905. 面包店 python
  • Qt QML实现弹球消砖块小游戏
  • 从0到1实现项目Docker编排部署
  • 百年匠心焕新居:约克VRF中央空调以科技赋能健康理想家
  • Java多线程基石—内存模型
  • CTF--Web安全--SQL注入之报错注入
  • 单元测试、系统测试、集成测试、回归测试的步骤、优点、缺点、注意点梳理说明
  • TF-IDF:文本挖掘中的关键词提取利器
  • 正则表达式 - 修饰符
  • Jetson Orin NX jupyter lab的安装和使用
  • C语言中的指针与数组:概念、关系与应用
  • 深入解读WT软件湍流强度计算与分析
  • python-leetcode 52.课程表
  • 深入理解 HTML 中的<div>和元素:构建网页结构与样式的基石
  • 方差缩减梯度算法
  • camellia redis proxy v1.3.3对redis主从进行读写分离(非写死,自动识别故障转移)
  • wlwrap 与 rlwrap 的区别对比:图形显示协议的演变
  • Kafka相关的面试题
  • 淘宝商品数据采集一键采集
  • 【数据分享】2000—2024年我国省市县三级逐月归一化植被指数(NDVI)数据(Shp/Excel格式)
  • 自适应二值化及伪影