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

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.kler.cn/a/589617.html

相关文章:

  • 3月17日作业
  • QT中的宏
  • JAVA | 聚焦 String 的常见用法与底层内存原理
  • 无人机吊舱模块更换技术难点分析!
  • UFS Link Startup 介绍
  • 怎么在centos7中搭建一个mqtt服务
  • 设计模式(行为型)-状态模式
  • 【CVPR 2025】局部区域自注意力LASA,用重叠补丁增强区域特征交互,即插即用!
  • 【Mac 从 0 到 1 保姆级配置教程 08】08. 快速配置 Neovim、LazyVim 以及常用开发环境,如果之前有人这么写就好了
  • 【JavaEE】Spring Boot 日志
  • Qt:槽函数与信号
  • 下载 CSS 文件阻塞,会阻塞构建 DOM 树吗?会阻塞页面的显示吗?
  • python项目一键加密,极度简洁
  • 使用Appium的W3C Actions实现多指触控行为
  • C++ STL 之常用拷贝和替换算法①copy();②replace();③replace_if();④swap();
  • C++ STL map
  • Spring Boot 动态配置管理:ZooKeeper 集成与 Redis 配置覆盖实践
  • easypoi导入Excel兼容日期和字符串格式的日期和时间
  • OpenCV计算摄影学(23)艺术化风格化处理函数stylization()
  • 【 <二> 丹方改良:Spring 时代的 JavaWeb】之 Spring Boot 的自动配置:约定优于配置的设计美学