尝试加载库文件时出现“bad image”错误。

我一直在尝试将一个库加载到lua文件中。鉴于细节并不重要,我已经尝试了很多种方法。

最终的方法,我相信是正确的,尽管我仍然无法使它正常工作,就是使用“package.loadlib”。 代码如下:

ed = package.loadlib("Encode_Decode.lua", "luaopen_ed")
print(ed)

但是当我运行程序时,我会得到这个错误:

Encode_Decode.lua 要么不能在 Windows 上运行,要么包含错误。请使用原始安装介质重新安装该程序,或与系统管理员或软件供应商联系以寻求支持。

我知道程序可以运行,因为我在内部使用它来测试编码和解码功能,并且它很好用。我真的不想移动库的内容,因为我的主要lua文件已经很拥挤了。如果必须,我会这样做。

是的,它在主文件夹中。我还尝试了将库文件的扩展名更改为.dll,但是仍然出现相同的错误。

我做错了什么?

提前道歉,如果这是一个重复的问题,我已经尽我所能彻底研究了这个问题。 但是老实说,现在已经接近凌晨3点了,我已经搜索了近一个小时。

原文链接 https://stackoverflow.com/questions/24303708

点赞
stackoverflow用户3375027
stackoverflow用户3375027

Stupid beginner mistake, used the wrong syntax.

这是一个愚蠢的初学者错误,使用了错误的语法。

require("Encode_Decode")
print(dec("bnVs")) --返回 "nul"
2014-06-19 10:02:31
stackoverflow用户646619
stackoverflow用户646619

package.loadlib 用于加载共享库,即 .dll.so 文件。但您却传递了一个 .lua 文件,因此 Windows 尝试将其作为 .dll 加载,但因为无法加载而失败。

为加载 Lua 源代码,您可以使用 dofile。或者,您可以使用 require,它更为复杂,但可以单次加载模块以及可以处理 Lua 和 C 模块。

2014-06-19 14:43:20