【问题标题】:Windows Lua to executable not find lua5.1.dllWindows Lua 可执行文件找不到 lua5.1.dll
【发布时间】:2016-06-01 14:01:21
【问题描述】:

我有一个 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

【问题讨论】:

    标签: windows lua


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

      3) 系统目录。对于 Windows,它类似于 C:\Windows\System32

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

      因此,如果您将可执行文件 gd.exeC:\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

      【讨论】:

      • @sgame 请记住对答案或评论进行投票以获得更多澄清或提供更多澄清。只是不回答这个问题或不提供其他信息对社区的其他人没有帮助。
      猜你喜欢
      • 2020-12-18
      • 2013-08-22
      • 1970-01-01
      • 1970-01-01
      • 2021-05-21
      • 2021-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多