使用 luajit FFI 在某些机器上找不到 DLL

DLL not found on certain machine with luajit FFI

我已经从源代码构建了 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.

根据 libgme 的编译方式,您可能有一些依赖项在您的计算机上满足(例如,mingw 库),但在另一台计算机上不满足。

我会尝试几件事:(1) 在 load 命令中使用完整的文件名,(2) 在 dependency walker 中使用 "profile" 模式来检查在DLL 加载,或 (3) 在您的机器上使用相同的依赖项 walker 来查看 libgme 可能依赖的其他 DLL 并将它们也包含在您的 package/installation 中。