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

时间:2018-07-09 02:19:02

标签: lua bytecode

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

newFrame

在以下情况之后,Load也返回nil:

sourceSets {
        debug.java.srcDirs += 'build/generated/source/proto/debug/java'
        debug.java.srcDirs += 'build/generated/source/proto/debug/grpc'
        debug.java.srcDirs += 'build/generated/source/proto/debug/javalite'
        release.java.srcDirs += 'build/generated/source/proto/release/java'
        release.java.srcDirs += 'build/generated/source/proto/release/grpc'
        release.java.srcDirs += 'build/generated/source/proto/release/javalite'
        main.proto.srcDirs += 'src/main/proto'
        main.kotlin.srcDirs 'build/generated/source/proto'
    }

文件在此处以字符串形式加载,但load或loadfile均未执行任何操作。有人知道为什么会这样吗?

1 个答案:

答案 0 :(得分:2)

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

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