2

我正在尝试将 dll 加载到我的 lua 脚本中并调用该函数。当我使用 GCC(在 cygwin 下)和 lua(5.2.4)创建 dll 时,我能够加载库并毫无问题地执行它。但是,当我使用 Lua 5.1 从 SciTE 创建运行相同的脚本时,dll 加载成功。但是,它不执行。在 dll 中,我试图简单地将两个整数写入文件。

t = package.loadlib("mylibrary.dll","myfunc")
t(23,45)

这里有两个问题: 1. 'mylibrary.dll' 应该是什么格式,以便 lua 可以毫无问题地理解和执行 - ELF 或 COFF。2.我可以在linux上运行的lua下运行dll(显然是在windows下构建的)吗?

4

1 回答 1

0

您标题中的问题似乎与您描述的问题的原因有很大不同。

一方面,Lua 加载的动态库的格式是 Lua 代码运行平台的格式。正如您不能获取已编译的 Win32 可执行文件并期望它在 Linux 上运行一样,您也不能获取已编译的 Win32 dll 并期望它在 Linux 上加载它。显然存在像 Wine 这样的仿真工具,但它们通过仿真 Windows 来工作。您可以在模拟器中运行它们,但不能在模拟器之外运行。

但另一方面,这不是你问题的根源。您的问题是您正在使用为一个版本的 Lua 构建的动态库和为另一个版本的 Lua 构建的应用程序。那是行不通的;Lua 不保留“次要”版本之间的兼容性,仅在修订之间(Lua 5.1.3 与 5.1.4)。

ELF 或 COFF,这是行不通的。

于 2015-12-12T01:13:13.507 回答