lua require路径设置实例

摘要:
1.首先,需要强调的是,luarequire的路径使用了斜杠“/”,而不是从Windows文件属性复制的反斜杠“”。2.通过Print(pagpackage.path)和Print(paggage.cpath)打印lua系统包的两个全局属性,以在当前lua解析器需要时查看默认替换路径3.更改路径时,将“;..?.rua”添加到lua脚本中,并将“;…?.dll”添加到dll文件中

1.首先要强调的是,lua require的路径用的是斜杠"/",而不是从Windows文件属性那里复制来的反斜杠""。

2.通过 print(pagckage.path) 和print(package.cpath)打印lua系统封装的两个全局属性可以看到当前lua解析器require的时候默认替换的路径

3.更改路径的时候,lua脚本加  ";..\?.lua" 而dll文件加 ";..\?.dll"

下面,我要将路径为 "D:Lua5.1luahgj-testhuang.lua" 的lua脚本require进hgj.lua脚本里。

huang.lua脚本:

huang={}
function huang.SumDouble(max)
sum=0
for i=0,max,2 do
sum=sum+i
end
return sum

end


hgj.lua脚本:

package.path = "D:/Lua5.1/lua/hgj-test/huang.lua" ..";..\?.lua"

require"huang.lua"
print(huang.SumDouble(100))
print(package.path)
print(package.cpath)


在hgj.lua按F5打印出来的结果是:


2550
D:/Lua5.1/lua/hgj-test/huang.lua;..?.lua
.?.dll;.?51.dll;D:Lua5.1?.dll;D:Lua5.1?51.dll;D:Lua5.1clibs?.dll;D:Lua5.1clibs?51.dll;D:Lua5.1loadall.dll;D:Lua5.1clibsloadall.dll

因为编码不同,所以加载dll出来的是乱码,如果知道dll里封装的属性和函数,加载之后就可以用print(package.loadlib("--dll名--",“--属性名/函数名--”))来读取dll的属性和函数。

我随便加载了公司打卡用的钉钉软件里的一个dll:

package.path = "D:/Program Files (x86)/DingDing/main/current/alilog.dll"..";..\?.dll"
require"alilog.dll"

--package.loadlib("alilog.dll","不知道函数名")

加载出一篇乱码,看不了,而且也不知道里面有什么函数,用不了,只能当示范。


当然,如果不用require调用其他脚本的属性或者函数,而是直接执行一整个其他脚本,还是 dofile("文件路径") 舒服,直接

dofile("D:/Lua5.1/lua/hgj-test/huang.lua")

就O了,但是有一点,代码设计的时候,调用的脚本里面的函数必须它自己执行,如果你光封装属性函数,不执行,那就不能用dofile这条路线了。

原文:https://blog.csdn.net/piger91/article/details/79940663
---------------------
作者:青竹浪
来源:CSDN
原文:https://blog.csdn.net/piger91/article/details/79940663
版权声明:本文为博主原创文章,转载请附上博文链接!

免责声明:文章转载自《lua require路径设置实例》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【JavaEE】SSH+Spring Security+Spring oauth2整合及exampleQt QSpacerItem (Horizontal Spacer 、Vertical Spacer) 的隐藏与显示下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

前端跨域

跨域是指一个域下的文档或脚本试图去请求另一个域下的资源。也就是说如果协议,域名,或者端口有一个不同就是跨域。 那么为什么要用跨域? 其实是因为浏览器出于安全考虑,我们都知道浏览器有同源策略。如果没有同源策略的情况下,A网站可以被任意来源的Ajax访问到内容,如果当前A网站还处于登录态,那么对方就可以通过Ajax获得A网站的任何消息。当然跨域可以用来房子CS...

老vue项目webpack3升级到webpack5全过程记录(一)

背景 19年新建的vue项目,使用的是webpack3,随着项目的积累,组件的增多导致本地构建,线上打包等操作速度极慢,非常影响开发效率和部署效率,基于此问题,本次对webpack及相关插件进行了优化和升级。本博文分为2篇,第 1 篇 会直接附上可运行的代码(去除了一些业务代码配置),直接粘贴复制即可使用(注意是基于vue2.0项目原配置基础上的修改哦,在...

redis Lua学习与坑

1.在写lua脚本往redis中添加zadd 有序集合的时候一直报 "value isnotavalid float"的错误,经过查询相关资料,最后发现,是顺序写反了。 相关代码 --[错误代码] redis.call('zadd',@TimeOrderKey,objRecord.ActivityID,@TimeScore);--[应该时间在前,value...

AdminLte 框架 和 requireJs 整合的问题

最近在 做一个基于 adminLte 框架的项目,在我将 require 引进项目之后,框架中的 adminlte.js 中搞的左侧边栏 就不起作用了。 刚开始以为是 各位不符合 requireJs 的书写格式,随后将 adminLTe。js 的 源码 修改为 define() 的格式,然而 当然还是没有效果。 define(['jquery'],func...

深入探究Lua的GC算法(下)-《Lua设计与实现》

紧接着上一篇文章zblade:深入探究Lua的GC算法(上)-《Lua设计与实现》 这篇文章让我们收尾GC的具体后续操作。转载请标明出处:http://www.cnblogs.com/zblade/ 3、GC的扫描阶段 GCSpropagate 只要处于这个阶段,就会分2种情况执行,一个是propagatemark,一个是atomic,让我们分别看...

Phaser3 游戏开发入门——自定义构建Phaser库

Phaser是一个简单易用且功能强大的html5游戏框架。 其实一点也不简单。虽然是js开发,但事实上您可以将项目发布到任何平台。 由于功能实在是太多,如果要降低Phaser的文件大小(880kb),我们可以自定义Phaser库的构建,指南https://medium.com/@louigi.verona/reducing-phasers-filesize...