当我尝试在x64计算机上运行使用x86计算机上的MC++编译器(vs2010)为x86 CPU构建的exe时,出现以下错误:
我已经在这第二台(x64)机器上安装了Visual Studio 2012(沿着Visual C++ 2012 Update 4可再发行版-x86和x64)。
快速搜索告诉我“MSVCR100.dll”已经存在于“C:\Windows\System32”中。
我试图安装Microsoft Visual C++ 2010 Redistributable,但它退出时出现错误,告诉我已经安装了上级版本。
请指导我做错了什么
2条答案
按热度按时间t3psigkw1#
首先,在64位版本的Windows中,32位系统可执行文件和应用程序扩展文件(aka DLL)被放置在
%systemroot%\SysWOW64
中,而不是%systemroot%\System32
中(这有点违反直觉,在64位Windows中包含64位版本)。因此,必须检查SysWOW 64文件夹中的x86/32位MSVC()DLL。其次,虽然在目标机器上安装相应的Visual Studio版本或在分布式程序中附带所需的C()DLL理论上应该可以解决问题,但这并不是必须的。安装相应的MSVC可再发行包就足够了(例如,在本例中,Microsoft Visual C 2010 x86可再发行包)。
注:
1.上述信息理论上是正确的,但损坏的Windows安装或...可能不符合。
1.将C++ DLL包含在分布式程序中是可以接受的(可能是保守但正确的决定),但安装Visual Studio版本仅仅是为了能够使用所讨论的DLL肯定是不可以的。
1.附带说明一下,C++可再发行软件包不安装DLL的调试版本,因此要运行调试编译的应用程序,必须安装或访问相应的Visual Studio版本。
2ul0zpep2#
您的应用程序需要VS2010的dll。您应该将x86计算机中的
MSVCR100.dll
和MSVCP100.dll
放在exe旁边。您也可以将VS2010与当前的VS2012一起安装。然后,您还应该安装VS2010的Service Pack1才能正常工作。安装VS2010后,您可以访问上述两个dll,也可能不需要“t需要将它们复制到您的exe目录。