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

Bha*_*jwa 7 c++ deployment dll msvcrt visual-studio-2012

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

程序无法启动,因为您的计算机缺少MSVCR100.dll.

我已经在第二台(x64)计算机上安装了visual studio 2012(以及可重新分发的Visual C++ 2012 Update 4,x86和x64).

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

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

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

小智 5

首先,在 64 位版本的 Windows 中,放置的是 32 位系统可执行文件和应用程序扩展文件(又名 DLL) (这%systemroot%\SysWOW64有点%systemroot%\System32违反直觉,在 64 位 Windows 中包含 64 位版本)。因此,必须检查 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 版本才能运行调试编译的应用程序。


Nej*_*jat 3

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

  • 您应该将应用程序的发行版本移植到未安装 VS 的其他平台上。应用程序的调试版本和各种 Visual C++ DLL 不可再发行。要运行调试版本,您需要在目标 PC 中安装 C++ 可再发行软件包。 (2认同)