在某些电脑上,使用 luajit FFI 时无法找到 DLL 文件

我已经从源代码编译了 Game Music Emu 并将其与 Love2d 一起使用。 (注意:我对 C / C ++ 不是很熟悉。)

在 lua 中,我使用 FFI 加载 dll,在 我的 计算机上它运行良好,但是当我将应用程序发送给朋友进行测试时,他的计算机无法识别 DLL。

我向他发送了包含 libgme DLL 的 love2d 二进制文件,以确保他没有将 DLL 文件放错地方。 因此,他运行的是我所运行的 完全相同的 内容。

我的代码如下:

ffi.cdef[[ ... ]]
local gme = ffi.load("libgme")

这是我朋友得到的确切错误:

lovegme.lua:4: cannot load module 'libgme.dll': The specified module could not be found.
点赞
用户1442917
用户1442917

根据 libgme 的编译方式,在你的计算机上可能已经满足某些依赖关系(例如,mingw 库),但在其他计算机上却不能满足。

我建议尝试以下几个方法:(1)在load命令中使用完整的文件名,(2)使用Dependency Walker中的"profile"模式来检查在 DLL 加载过程中哪些部分失败,或者(3)在你的机器上使用相同的 Dependency Walker 来查看 libgme 可能依赖的其他 DLL,并将它们包含在你的软件中或安装时安装这些 DLL。

2019-06-24 21:58:01