【问题标题】:System.DllNotFoundException: Unable to load DLL on window 2003System.DllNotFoundException:无法在窗口 2003 上加载 DLL
【发布时间】:2011-01-06 19:13:01
【问题描述】:

我在我的 c# 项目中使用了 c++ dll,它在我的 windows xp 机器上运行良好,但是当我在 windows 2003 服务器 (x64) 上复制我的调试项目时,我收到下面的错误,谁能告诉我这是什么问题,我该如何解决。

谢谢

“System.DllNotFoundException: 无法加载 DLL 'lib.dll': 由于应用程序配置不正确,此应用程序无法启动。重新安装应用程序可能会解决此问题”

【问题讨论】:

  • lib.dll 是否存在于应用程序目录中?
  • 是的,是的,但是错误仍然出现..有没有人知道如何解决..我感到很沮丧...
  • lib.dll 是否也在调试中内置?它可能会尝试链接调试 C++ 运行时,如果没有在 Windows 2003 机器上安装 Visual Studio,则不会安装该运行时。
  • @shf301:好主意,这让我被咬了太多次 :)
  • 我没有 lib.dll 的源代码。当我点击调试时,我的项目确实将 lib.dll 复制到了调试文件夹。

标签: c# dll dllnotfoundexception


【解决方案1】:

我发现一些 dll-s 在操作系统需要更新时被冻结。 只需检查待处理的更新、安装它们和/或重新启动 Windows。

之后冻结的 dll-s 被释放并且问题消失了。

【讨论】:

    【解决方案2】:

    听起来您还没有在目标机器上安装 Visual c++ 运行时。您可以从here 安装它,因为它似乎正在使用这些 dll 的调试版本,也许您还需要先在发布模式下构建您的应用程序? This postthis one 有一些其他的建议可能会有所帮助...

    【讨论】:

      【解决方案3】:

      lib.dll 是 32 位 DLL 吗?您的 C# 程序将在 x64 上本机运行,但无法加载 32 位 DLL。您可以尝试将 C# 项目的目标 CPU 更改为“x86”以强制其在 WOW64 下运行。

      【讨论】:

        【解决方案4】:

        对于DLL加载问题,我建议你使用Dependency Walker工具。事实证明,它在处理此类问题时很有价值,因为它会向您显示确切的问题。

        如果您拥有 Visual Studio 2005,您可以在 C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\Bin\depends.exe 找到它。

        更新:

        MSVCR90D.DLL 是 Visual C++ 运行时 9.0 的调试版本。它只能用于调试目的。我强烈建议构建您的库的发布版本以避免 DLL 加载问题。但是,如果您绝对需要部署调试版本,您将在C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\Debug_NonRedist\x86 中找到所有必需的 DLL。

        【讨论】:

        • 谢谢!你的回答在很大程度上帮助了我。 Dependency Walker 找到了问题的根源。
        • 这就是票。我已经在 unity3d 中为这个问题苦苦挣扎了一周。
        【解决方案5】:

        它抱怨找不到 CRT dll。首先检查 DLL 是否包含所需的清单。在 Visual Studio 中,文件 + 打开 + 文件,选择 DLL 并验证它是否包含 RT_MANIFEST 节点。下一个问题是您无法部署 DLL 的调试版本。它将依赖于 CRT 的调试版本,您无法在目标机器上安装它。

        要么部署 DLL 的 Release 版本,要么使用 /MT 选项编译 DLL,以便静态链接 CRT。项目 + 属性、C/C++、代码生成、运行时库。如果 DLL 是使用 /clr 选项编译的,这将不起作用。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-06-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-05-05
          • 2022-01-10
          • 1970-01-01
          • 2017-02-08
          相关资源
          最近更新 更多