即使安装了MSVCR100.dll也未找到错误

问题描述 投票:0回答:3

当我尝试在 x64 机器上运行 exe 时,出现以下错误,该 exe 是在 x86 机器上使用 MC++ 编译器 (vs2010) 为 x86 CPU 构建的:

The program can’t start because MSVCR100.dll is missing from your computer.

我已经在第二台 (x64) 计算机上安装了 Visual Studio 2012(以及 Visual C++ 2012 Update 4 可再发行组件 - x86 和 x64)。

快速搜索告诉我“MSVCR100.dll”已经存在于“C:\Windows\System32”中。

我尝试安装 Microsoft Visual C++ 2010 Redistributable,但它退出并显示错误,告诉我已经安装了高级版本。

请指导我我做错了什么。 :)

c++ visual-studio-2012 dll deployment msvcrt
3个回答
5
投票

首先,在 64 位版本的 Windows 中,32 位系统可执行文件和应用程序扩展文件(又名 DLL)放置在

%systemroot%\SysWOW64
而不是
%systemroot%\System32
中(这有点违反直觉,它包含 64 位版本的64 位 Windows)。因此必须检查 SysWOW64 文件夹中是否有 x86/32 位 MSVC(++) DLL。

其次,虽然在目标机器上安装相应的Visual Studio版本或者在分布式程序中附带所需的C(++) DLL,理论上应该可以解决问题,但没有必要。安装相应的 MSVC++ 可再发行软件包就足够了(例如,在本例中为 Microsoft Visual C++ 2010 x86 可再发行软件包)。

备注:

  1. 上述信息理论上是正确的,但 Windows 安装损坏或......可能不符合要求。
  2. 将 C++ DLL 包含在分布式程序中是可以接受的(可能是一个保守但正确的决定),但仅仅为了能够使用相关 DLL 而安装 Visual Studio 版本绝对是不行的。
  3. 顺便说明一下,C++ 可再发行包不会安装 DLL 的调试版本,因此需要安装或访问相应的 Visual Studio 版本才能运行调试编译的应用程序。

3
投票

您的应用程序需要 VS2010 的 dll。您应该将 x86 机器上的

MSVCR100.dll
MSVCP100.dll
放在 exe 旁边。您还可以将 VS2010 与当前的 VS2012 一起安装。那么你还应该安装VS2010的Service Pack1才能正常工作。安装 VS2010 后,您可以访问上述两个 dll,而且您可能不需要将它们复制到您的 exe 目录中。


0
投票

我只是想玩 Grim Fandango,为什么这么难

© www.soinside.com 2019 - 2024. All rights reserved.