无法使用loadfile或load加载预编译的lua字节码

无法使用loadfile或load加载预编译的lua字节码,lua,bytecode,Lua,Bytecode,我已经使用luac53编译了我的lua代码,并拥有字节码文件。问题是loadfile似乎不想加载它,并返回nil local func = loadfile("file.txt")//Returns nil Load在以下情况后也返回nil: local file = io.open("file.txt", "rb") local str = file:read("*a") file:close() local func = load(str, "bt")//Returns nil 文件在这

我已经使用luac53编译了我的lua代码,并拥有字节码文件。问题是loadfile似乎不想加载它,并返回nil

local func = loadfile("file.txt")//Returns nil
Load在以下情况后也返回nil:

local file = io.open("file.txt", "rb")
local str = file:read("*a")
file:close()
local func = load(str, "bt")//Returns nil

文件在这里以字符串形式加载,但load或loadfile都没有执行任何操作。有人知道为什么会发生这种情况吗?

对于发出错误的函数,标准的Lua做法是返回
nil
,然后返回错误消息。您提供的Lua文件可能在加载时生成错误,因此它将返回该错误。但您永远不会寻找第二个返回值


assert
在这里很有用,因为如果出现错误,需要测试一个值和打印一个字符串。因此,如果您执行了
assert(loadstring(…)
,如果它出错,它将打印
loadstring
返回的错误。另外,
assert
将返回给定的第一个参数,因此如果
loadstring
成功,
assert(loadstring(…)
将返回加载的块。

这不是您的问题,但一般来说,
.txt
文件应该是某种文本文件。将编译好的Lua字节码粘贴到“文本文件”中是一种糟糕的形式。我还尝试从标准的.Lua文件加载字节码,但也没有用。这让我很困惑。就像我说的,这不是你的问题。您真正的问题可能与执行脚本时的当前目录(即,文件不在当前“当前”的目录中)或其他一些路径问题有关。但是如果不在实际的计算机上,就无法知道。当使用load方法时,从文件加载的str只是文件。Lua决定今天对我来说很难:(.啊,我明白了。我得到了信息“预编译块中的大小不匹配。”。我真的不知道为什么,因为lua文件肯定没有错误,并且是用lua编译器编译的。你知道为什么会发生这种情况吗?@Varscott11:这是另一个问题,只能通过提供实际脚本来回答。以及是什么生成了它(即:预编译器)。谢谢你的帮助。至少我离找到问题更近了。干杯!@Varscott11,“大小不匹配”意味着脚本是在不同的平台上预编译的,而不是您试图加载它的平台。