1.首先要强调的是,lua require的路径用的是斜杠"/",而不是从Windows文件属性那里复制来的反斜杠"\"。
2.通过 print(pagckage.path) 和print(package.cpath)打印lua系统封装的两个全局属性可以看到当前lua解析器require的时候默认替换的路径
3.更改路径的时候,lua脚本加 ";..\\?.lua" 而dll文件加 ";..\\?.dll"
下面,我要将路径为 "D:\Lua5.1\lua\hgj-test\huang.lua" 的lua脚本require进hgj.lua脚本里。huang.lua脚本:huang={}function huang.SumDouble(max)sum=0for i=0,max,2 dosum=sum+iendreturn sumendhgj.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打印出来的结果是:2550D:/Lua5.1/lua/hgj-test/huang.lua;..\?.lua.\?.dll;.\?51.dll;D:\Lua5.1\?.dll;D:\Lua5.1\?51.dll;D:\Lua5.1\clibs\?.dll;D:\Lua5.1\clibs\?51.dll;D:\Lua5.1\loadall.dll;D:\Lua5.1\clibs\loadall.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 版权声明:本文为博主原创文章,转载请附上博文链接!