Windows Lua可执行文件找不到lua5.1.dll

时间:2016-06-01 14:01:21

标签: windows lua

我有一个Lua程序(用Lua 5.1编写)。我在Windows 7上尝试使用srlua将lua文件转换为可执行文件。最后我创建了一个可执行文件

glue.exe srlua.exe myscript.lua gd.exe

当我点击exe / bat执行时。它崩溃了。提示:在计算机中找不到lua51.dll。 当我用cmd执行时。这行得通。即使我只将gd.exe移动到其他目录。 所以为什么 ? srlua在没有lua环境的情况下创建独立的exe? dir ls

error tips

2 个答案:

答案 0 :(得分:0)

在Windows中,可执行文件只会在.dll(按顺序)的几个位置查找:

1)首先搜索任何依赖路径。您可以在创建项目时进行设置(通常通过IDE)。

2)运行可执行文件的当前目录。例如,如果 gd.exe 位于 C:驱动器中 myexe 文件夹中,则目录 C:\ myexe 将被检查。

3)系统目录。对于Windows,它有点像 C:\ Windows \ System32

4)由 PATH 环境变量指定的任何其他路径。

因此,如果您将可执行文件 gd.exe C:\ myexe 移至 C:\ myexe2 ,则您需要通过依赖项/ PATH 环境变量指向.dll,或将所需的所有.dll文件移动到新目录。

如果命令行用于运行程序,而不是.exe本身,则命令行设置了 PATH 环境变量。您可以使用setx path“%path%; c:\ newpath”在命令行中设置它,或使用控制面板 - >系统和安全 - >系统然后点击高级系统设置 - >环境变量和系统变量下,查找 PATH 关键字。

将.dll文件和可执行文件保存在目录(例如 c:\ myexe )中并运行可执行文件是确保它们协同工作并且所有必需的.dll文件都是你的可执行文件看到了。

来源(即使它未提及 PATH 环境变量):https://msdn.microsoft.com/en-us/library/windows/desktop/ms682586(v=vs.85).aspx

答案 1 :(得分:0)

您正在混合Lua环境:您的目录结构显示Lua51.dll,但您的错误消息引用了您没有的Lua5.1.dll(这些是两个不同的文件)。不知何故,你依赖于一个针对Lua5.1.dll编译的模块。您可以使用a dependency walker找出依赖关系链,因为它将显示正在加载哪些DLL以及从哪些位置加载。您也可以在“配置文件”模式下运行它,它将显示您在依赖关系链中看到的错误发生的位置,这样您就可以知道哪个DLL或可执行文件有问题。