【问题标题】:Missing dlls on 64 bit Win在 64 位 Win 上缺少 dll
【发布时间】:2011-09-27 11:56:39
【问题描述】:

我有一个 .net 应用程序,它使用一些 vc++ 编译的 Win32 dll。它在 32 位 Win 上运行良好,但在 64 位上出现问题:“无法加载 DLL 'xyz':找不到指定的模块。(HRESULT 异常:0x8007007E)”

使用 dependency walker 我发现它遗漏了以下 dll:MSVCP100.DLL、MSVCR100.DLL、GDIPLUS.DLL、GPSVC.DLL、IESHIMS.DLL

如何将它们安装到我的 64 位 Win?我应该把它们放在哪里?我应该注册它们吗?还是……?

注意,我的项目是为 x86 平台编译的,它作为 32 位应用程序从 Program Files (x86) 文件夹中运行。我的 dll 在 Visual Studio 2010 中通过 Visual C++ 编译为 Win32。

请注意,由于某些其他原因,我无法获得 64 版本的 dll,因此这不是解决方案。

谢谢!

【问题讨论】:

  • 我编译过的每个项目都缺少 IESHIMS。不知道为什么。

标签: .net c++ dll


【解决方案1】:

整个过程应该是 32 位或 64 位。如果您无法在 64 位中编译所有依赖库,则需要在 32 位中运行 .NET 项目。为此,请创建 x86 配置(默认为 Any CPU)并在此配置中构建 .NET 项目。

您还需要在目标计算机上安装具有正确位数的 VC++ 2010 可再发行包,在您的情况下是 x86。这个包可以从微软网站下载。

如果您的程序有安装包,应将 VC++ 可再发行组件作为单个文件或合并模块添加到其中。

【讨论】:

  • 一切都构建为 x86,这不是问题。问题是这些dll
  • 谢谢。 VC++ 2010 可再发行包有所帮助。
【解决方案2】:

正如 ALex Farber 所说,您必须在目标机器上安装一些运行时 dll:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-06
    • 2013-06-22
    • 2023-03-04
    • 2011-07-21
    • 2013-01-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多