Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ MSVCP100.dll未找到错误,即使已安装_C++_Visual Studio 2012_Dll_Deployment_Msvcrt - Fatal编程技术网

C++ MSVCP100.dll未找到错误,即使已安装

C++ MSVCP100.dll未找到错误,即使已安装,c++,visual-studio-2012,dll,deployment,msvcrt,C++,Visual Studio 2012,Dll,Deployment,Msvcrt,当我尝试在x64计算机上运行exe时,会出现以下错误,该计算机是在x86计算机上使用MC++编译器(vs2010)为x86 CPU构建的: 我已经有VisualStudio 2012(连同VisualC++ 2012更新4可重新分发的X86和X64)安装在第二个(X64)机器上。 快速搜索告诉我“MSVCR100.dll”已经存在于“C:\Windows\System32”中 我尝试安装微软Visual C++ 2010可重分发但它退出了一个错误告诉我已经安装了一个高级版本。 请告诉我我做错了

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

我已经有VisualStudio 2012(连同VisualC++ 2012更新4可重新分发的X86和X64)安装在第二个(X64)机器上。 快速搜索告诉我“MSVCR100.dll”已经存在于“C:\Windows\System32”中

我尝试安装微软Visual C++ 2010可重分发但它退出了一个错误告诉我已经安装了一个高级版本。
请告诉我我做错了什么。:)

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

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

其次,虽然在目标机器上安装相应的visual studio版本,或者在分布式程序中附带所需的C(++)DLL,理论上可以解决问题,但这并不是必需的。安装相应的MSVC++可再分发软件包(例如微软Visual C++ 2010 X86可重分发包在这种特殊情况下)就足够了。 注意事项:

  • 上述信息理论上是正确的,但Windows安装或。。。可能不符合
  • 包括分布式程序的C++ DLL(可以是保守但正确的决定),但是安装VisualStudio版本只能够使用所讨论的DLL肯定不是。
  • 作为旁注,C++可重新分配的包不安装DLL的调试版本,因此安装或访问相应的VisualStudio版本对于运行调试编译的应用程序是必需的。

  • 如果您是用VS2010构建的,则必须安装VS2010版本的运行时。为了帮助您调试问题,您可能需要尝试实际查看二进制文件到底在寻找什么。@RogerRowland,但如前所述:“我试图安装微软Visual C++ 2010可重新分发,但它退出了一个错误告诉我,一个高级版本(微软C++ +可重新分配2012更新4)已经安装在系统上。“好吧,这不是我的事。我可以为VS2005、VS2008、VS2010和VS2012安装vcredist,它们在我们的安装程序中对于不同的组件都是必需的。您是从哪里下载可再发行文件的?听起来您安装的是不同的VS2012版本,而不是VS2010版本。已安装的DLL具有不同的名称。试试。@RogerRowland从这里下载了(x86和x64):我也在考虑尝试同样的方法。我试试看,让你知道。这很有效。非常感谢。但这是一个缺点。如果要执行可调试的exe,是否需要在每台计算机上安装visual studio 2010?您应该在未安装VS的其他平台上移植应用程序的发布版本。应用程序的调试版本和各种Visual C++ DLL都不能重新分配。对于调试版本,您需要在目标PC中安装C++可重新分配包。非常感谢。经过几个小时的搜索,它解决了我的问题。