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

时间:2019-06-24 19:20:00

标签: dll lua ffi love2d luajit

我从源代码构建了Game Music Emu以便用于Love2d。 (注意:我对C / C ++不太熟悉。)

在lua中,我用FFI加载了dll,并在我的计算机上运行良好,但是当我向我的朋友发送该应用进行测试时,他的机器无法识别DLL。

我向他发送了带有libgme DLL的love2d二进制文件,以确保他不只是放错了DLL文件。因此,他正在运行的正是我正在运行的 exact

我的代码如下:

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

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

lovegme.lua:4: cannot load module 'libgme.dll': The specified module could not be found.

1 个答案:

答案 0 :(得分:1)

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

我会尝试几种方法:(1)在load命令中使用完整文件名,(2)在dependency walker中使用“配置文件”模式检查DLL加载失败的原因,或者(3)在您的计算机上使用相同的依赖遍历器,以查看libgme可能依赖的其他DLL,并将它们也包含在您的软件包/安装中。