Lua中文语言编程源码-第八节,更改loadlib.c 动态库加载器函数, 使Lua加载中文库关键词(加载库,搜索路径,引入)

源码已经更新在CSDN的码库里:

git clone https://gitcode.com/funsion/CLua.git

在src文件夹下的loadlib.c  动态库加载器函数,此模块包含适用于具有dlfcn的Unix系统的loadlib实现,适用于Windows系统的实现,以及适用于其他系统的占位符实现。

增加中文版luaL_Reg pk_funcs 包的使用列表,保留英文版luaL_Reg pk_funcs 包的使用列表。

原始的代码为:
static const luaL_Reg pk_funcs[] = {{"loadlib", ll_loadlib},{"searchpath", ll_searchpath},/* placeholders */{"preload", NULL},{"cpath", NULL},{"path", NULL},{"searchers", NULL},{"loaded", NULL},{NULL, NULL}
};static const luaL_Reg ll_funcs[] = {{"require", ll_require},{NULL, NULL}
};
 更改成以下代码: 
static const luaL_Reg pk_funcs[] = {{"loadlib", ll_loadlib},{"加载库", ll_loadlib},{"searchpath", ll_searchpath},{"搜索路径", ll_searchpath},/* placeholders */{"preload", NULL},{"cpath", NULL},{"path", NULL},{"searchers", NULL},{"loaded", NULL},{NULL, NULL}
};static const luaL_Reg ll_funcs[] = {{"require", ll_require},{"引入", ll_require},{NULL, NULL}
};

为了保证中英文 函数都可以加载,以便你可以复制英文原码来进行更改。所以保留了英文版 函数名列表,这样就能使用两种文的函数。
  {"require", ll_require},    // 引入
  {"引入", ll_require},   // 和require相同,但是使用中文名称

其实它们都是加载同样的库名,算是加载了2次,以Lua内部算法,应该只会加载一次。

更改完之后,同样需要重新编译Lua的源码,实现以上列出的关键词的中文化。

注意,在Window系统下编译Lua, 最好将所有Lua的源码,重新保存成ANSI格式的文件,刚下载的默认的源码会是UTF-8格式的。

这个事情说三遍,

1,不然就会出现,Window下的UTF-8源码可编译,但Shell里的中文输出会乱码。
2,要不然就是Window的ANSI源码不可编译(假如你没做以上步骤),
3,如果是用ANSI格式的源码编译的Lua.exe,对应的,你在Window下写的Lua程序也是需要保存成ANSI格式的。这样就可以在Shell里输出正确的中文显示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/761583.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

探秘开源隐语:架构深度剖析与隐私计算技术之旅

1.隐语架构 隐语(SecretFlow)作为蚂蚁集团开源的可信隐私计算框架,其架构设计具有多层次的特点,虽然具体分层名称可能会根据实际描述略有差异,但我们可以依据已有的技术和信息对其进行结构化的拆解: 硬件层…

如何使用Excel创建一个物品采购表

在企业的日常运营中,物品采购是一个常见且重要的活动。有效的采购管理不仅可以确保企业及时获得所需物资,还可以控制成本、提高效率。Microsoft Excel是一个功能强大的工具,它可以帮助我们创建和管理物品采购表。本文将详细介绍如何使用Excel…

Lua | 一篇文章讲清Lua语法及热更新

目录 一、环境搭建 二、Lua语法 1.输出print、单行注释、多行注释 2.变量 (1)nil (2)number (3)string (3.1)字符串长度 (3.2)字符串拼接 &#xf…

归并算法详细解析

归并排序 1945年,约翰冯诺依曼(John von Neumann)发明了归并排序,这是典型的分治算法的应用。归并排序(Merge sort)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Di…

数学建模(Topsis python代码 案例)

目录 介绍: 模板: 案例: 极小型指标转化为极大型(正向化): 中间型指标转为极大型(正向化): 区间型指标转为极大型(正向化): 标…

在Java中使用Apache POI保留Excel样式合并多个工作簿

背景 在日常工作中,我们经常需要将多个Excel文件合并成一个,同时保留原有的样式和格式。Apache POI是一个流行的Java库,用于读取和写入Microsoft Office格式的文件,包括Excel。然而,仅仅使用Apache POI的基本功能进行…

RequestResponse使用

文章目录 一、Request&Response介绍二、Request 继承体系三、Request 获取请求数据1、获取请求数据方法(1)、请求行(2)、请求头(3)、请求体 2、通过方式获取请求参数3、IDEA模板创建Servlet4、请求参数…

WEB 表单练习题

任务如图&#xff1a; <html><head><meta charest"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </head><body><table width"…

第二十八章 配置 Web Gateway 的默认参数 - 与 IRIS 的连接

文章目录 第二十八章 配置 Web Gateway 的默认参数 - 与 InterSystems IRIS 的连接(一)与 IRIS 的连接Server Response TimeoutQueued Request TimeoutNo Activity TimeoutApply timeout to all ConnectionsEvent Log LevelEvent Log FileRetain All Log Files 第二十八章 配置…

Apache Commons-Configuration2 堆栈溢出漏洞复现 (CVE-2024-29131)

免责声明 由于传播、利用本CSDN所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任,一旦造成后果请自行承担! 一、产品介绍 Apache Commons Configuration2 是 Apache Commons 组件库中的一个项目,用于处理配置文件的读取、解…

Google的MELON: 通过未定位图像重建精确3D模型的突破性算法

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

算法沉淀——贪心算法七(leetcode真题剖析)

算法沉淀——贪心算法七 01.整数替换02.俄罗斯套娃信封问题03.可被三整除的最大和04.距离相等的条形码05.重构字符串 01.整数替换 题目链接&#xff1a;https://leetcode.cn/problems/integer-replacement/ 给定一个正整数 n &#xff0c;你可以做如下操作&#xff1a; 如果…

数据结构:堆的创建和使用

上一期我们学习了树和二叉树的定义&#xff0c;其中我们了解到了两种特殊的二叉树&#xff1a;满二叉树和完全二叉树。 今天我们还要学习一种新的结构&#xff1a;堆 那这种结构和二叉树有什么联系呢&#xff1f;&#xff1f;&#xff1f; 通过观察我们可以发现&#xff0c;…

什么是通用人工智能(AGI)以及为什么它还没有到来:给AI爱好者的现实检查

人工智能通用智能(AGI)及其现状&#xff1a;AI爱好者的现实检验 引言 人工智能(AI)已经无处不在。从智能助手到自动驾驶汽车&#xff0c;AI系统正在改变我们的生活和商业。但是&#xff0c;如果有一种AI能够超越执行特定任务的能力呢&#xff1f;如果有一种AI能够像人类一样学…

pytorch之torch.save()和torch.load()方法详细说明

torch.save()和torch.load()是PyTorch中用于模型保存和加载的函数。它们提供了一种方便的方式来保存和恢复模型的状态、结构和参数。可以使用它们来保存和加载整个模型或其他任意的Python对象&#xff0c;并且可以在加载模型时指定目标设备。 1.语法介绍 1.1 torch.save()语法…

uni-app开发---4.首页

一、创建 home 分支 运行如下的命令&#xff0c;基于 master 分支在本地创建 home 子分支&#xff0c;用来开发和 home 首页相关的功能&#xff1a; git checkout -b home 二、配置网络请求 由于平台的限制&#xff0c;小程序项目中不支持 axios&#xff0c;而且原生…

ARM-UART实验

串口控制三盏灯亮灭 视频 串口实验验证.mp4 代码 uart4.c #include "uart4.h"void uart4_init() {//使能GPIOB GPIOG UART4外设时钟RCC->MP_AHB4ENSETR | (0x1<<1);//GPIOBRCC->MP_AHB4ENSETR | (0x1<<6);//GPIOGRCC->MP_APB1ENSETR | (0X…

鸿蒙一次开发,多端部署(三)应用UX设计原则

设计原则 当为多种不同的设备开发应用时&#xff0c;有如下设计原则&#xff1a; 差异性 充分了解所要支持的设备&#xff0c;包括屏幕尺寸、交互方式、使用场景、用户人群等&#xff0c;对设备的特性进行针对性的设计。 一致性 除了要考虑每个设备的特性外&#xff0c;还…

SOCKS5代理、代理IP、HTTP与网络安全的融合之旅

在数字化世界的无边网络海洋中&#xff0c;数据以难以想象的速度流动&#xff0c;连接着世界的每一个角落。作为一名软件工程师&#xff0c;深入理解网络通信的基石——SOCKS5代理、代理IP、HTTP协议&#xff0c;并掌握这些技术在网络安全中的应用&#xff0c;是航行于这片海洋…

C# 读取二维数组集合输出到Word预设表格

目录 应用场景 设计约定 范例运行环境 配置Office DCOM 实现代码 组件库引入 核心代码 DataSet转二维数组 导出写入WORD表格 调用举例 小结 应用场景 存储或导出个人WORD版简历是招聘应用系统中的常用功能&#xff0c;我们通常会通过应用系统采集用户的个人简历信息…