【问题标题】:Load bytecode with load function使用加载函数加载字节码
【发布时间】:2015-04-15 16:13:59
【问题描述】:

我使用luac52.exe -o test.txt test.lua 命令生成了test.lua 文件的字节码,名为test.txt。现在,如果我用 Notepad++ 打开test.txt 文件,它会包含一些非常奇怪的黑色符号。现在,如何使用load("abcde", nil, "bt", _ENV)() 命令加载它?我需要特别使用加载功能......我应该给一个 .txt 扩展名吗? 谢谢

【问题讨论】:

  • 你看过load函数的文档吗?
  • 您打算如何将 test.txt 的内容传递给加载函数?而且,.txt 是不包含文本的文件的奇怪扩展名。有些人使用 .lub 作为 Lua 字节码。
  • 我不知道如何将 .txt 的内容复制并粘贴到加载函数的“abcde”文本中,因为它确实不是常规文本......即使我使用.lub 并使用 Notepad++ 打开它,它的内容与 .txt 完全相同...
  • 我怀疑这个问题有X-Y Problem。帮助你的最好方法是让你描述你的更高层次的目标是什么以及为什么你被限制使用load

标签: lua bytecode


【解决方案1】:

使用loadfile("test.txt") 而不是load。这将为您提供一个函数,您需要运行该函数来执行 test.txt 中的任何内容。

或者您可以使用dofile("test.txt"),您可以加载并运行它。

如果确实需要使用load,那么将test.txt的内容读入字符串发送给load

要读取文件的内容,请参阅Read whole file and print in lua

【讨论】:

  • 但是我需要专门使用加载功能,因为我提到了T_T有什么办法可以通过加载来完成吗?
  • 首先,感谢您的回答。我使用了 c = f:read("*all") 并且如果我测试打印 c 则只打印一个“LuaR”。即便如此,如果我使用 load(c, nil, "bt", _ENV)() 那么它会给出错误尝试调用 nil 值...
  • load 需要一个返回要加载的字符串或块的函数。试试load(function() return f:read "*a" end)
  • 同样,我使用了 load(function() return f:read "*a" end, nil, "bt", _ENV)()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多