即使安装了MSVCP100.dll也找不到错误

时间:2014-01-22 13:09:33

标签: c++ visual-studio-2012 dll deployment msvcrt

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

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

我已经安装了第二台(x64)计算机上的visual studio 2012(以及x6和x64的可重新发布的可更新版本4)。

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

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

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

2 个答案:

答案 0 :(得分:3)

您的应用程序需要VS2010的dll。你应该在你的exe旁边的x86机器上放置MSVCR100.dllMSVCP100.dll。您也可以将VS2010与当前的VS2012一起安装。那么你也应该安装VS2010的Service Pack1才能正常工作。安装VS2010后,您可以访问两个提到的dll,也可能不需要将它们复制到exe目录。

答案 1 :(得分:3)

首先,在64位版本的Windows中,32位系统可执行文件和应用程序扩展文件(又称DLL)放在%systemroot%\SysWOW64而不是%systemroot%\System32(其中)有点违反直觉,在64位Windows中包含64位版本。因此,必须检查SysWOW64文件夹中的x86 / 32位MSVC(++)DLL。

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

备注:

  1. 上述信息在理论上是正确的,但损坏的Windows安装或......可能不符合。
  2. 将C ++ DLL与分布式程序包含在一起是可以接受的(并且可能是保守但正确的决定),但安装Visual Studio版本仅仅是为了能够使用有问题的DLL绝对不是。
  3. 作为旁注,C ++可再发行组件包不会安装DLL的调试版本,因此运行调试编译的应用程序需要安装或访问相应的Visual Studio版本。