【问题标题】:LuaInterface - FileNotFoundExceptionLuaInterface - FileNotFoundException
【发布时间】:2011-12-10 16:15:45
【问题描述】:

我正在尝试让 Lua 系统在我的 .NET 4.0 应用程序中运行。我使用 LuaInterface 作为 Lua 的包装器,它是在 .NET 4.0 下编译的

在我安装了 VS2010 的开发计算机上运行 Lua 脚本时,应用程序运行良好。但是在另一台计算机上运行它时,我得到了 FileNotFoundException。

System.IO.FileNotFoundException: Could not load file or assembly 'lua51.dll' or one of its dependencies. The specified module could not be found.

lua51.dll 与应用程序位于同一文件夹中,因此我看不出有任何问题。所以这一定意味着它找不到 lua51.dll 依赖的文件。这就是问题所在。

我需要让我的用户安装哪些文件才能使其正常工作?

【问题讨论】:

    标签: c# lua clr luainterface


    【解决方案1】:

    您可以使用 Fusion Binding 日志记录来分析这一点。这可以在命令行中完成,记录到文件中,或通过 GUI 界面 (FUSLOGVW.exe) 查看。开始 here 看看是否能让你开始。

    【讨论】:

    • 感谢您的回复。这看起来可能很好。我正在使用 VM 测试异常,因此我可以从这台计算机上执行此操作,这很好。如何安装 DEBUG 构建环境?
    • 您能否解释一下“DEBUG 构建环境”的含义?
    • 我的错,非常糟糕的解释。我正在寻找的是能够在我的 VM 上使用 FUSLOGVW.exe,因为我没有安装 VS2010。但是看看这个答案 - stackoverflow.com/questions/1012252/… 帮助了我很多
    • 是的,把它复制过来。但是 FUSLOGVW.exe 真的没有必要。消息也可以输出到控制台或文件。无论哪种方式最适合您。
    • 他在使用 非托管 DLL 时遇到问题,fuslogvw.exe 仅显示托管程序集的绑定。他缺少 msvcr100d.dll。构建问题,使用 /MT 并构建发布版本。
    【解决方案2】:

    如果您的开发系统和存在问题的系统不是同一架构(32 位 -> 64 位),则可能会导致您出现问题。我在C# external library (Lua) call problem回答了一个类似的问题@

    “我在 .NET、LuaInterface 和 Lua5.1 在 64 位机器上交互时遇到了很多问题。Lua5.1 只能编译 32 位,这需要您(我相信)将 LuaInterface 项目构建为32 位也是如此。尝试在您的 .NET 项目中将“项目 -> 属性 -> 构建 -> 平台目标”更改为“x86”。”

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题。

      我通过安装 microsoft 的 vcredist_x86.exe(Visual C++ 2010 Redistributable Package)解决了这个问题,它将所需的 DLL 添加到系统中。

      我尝试使用 /MT 选项编译 lua51.dll,但此选项与 /CLR 选项不兼容,这是必需的。 然后我尝试安装 redist 包 2008(就像 LuaInterface 网站说的那样),它不起作用(也许我自己用 VS 2010 编译了 lua - 我不知道了)。 2010 版解决了我的问题。

      【讨论】:

        猜你喜欢
        • 2011-03-24
        • 2014-09-15
        • 2014-11-23
        • 1970-01-01
        • 2023-04-10
        • 2014-09-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多