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

文章讲述了对CLua库的源码进行更新,增加了中文版的函数名(如loadlib,searchpath),同时保持英文版本以支持双语调用。此外,还提到在Windows系统编译时需注意文件编码格式以避免中文乱码问题。
摘要由CSDN通过智能技术生成

源码已经更新在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里输出正确的中文显示。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值