【问题标题】:MSVCP100.dll not found error even when it is installedMSVCP100.dll 安装时未发现错误
【发布时间】:2014-02-12 13:35:09
【问题描述】:

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

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

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

我尝试安装 Microsoft Visual C++ 2010 Redistributable,但它退出并提示我已安装高级版本。

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

【问题讨论】:

  • 如果你是用VS2010构建的,你必须安装VS2010版本的运行时。
  • 为了帮助您调试问题,您可能想尝试dependencywalker.com 来实际查看您的二进制文件到底在寻找什么。
  • @RogerRowland 但如前所述:“我尝试安装 Microsoft Visual C++ 2010 Redistributable,但它退出时出现错误,告诉我高级版本(Microsoft C++ Redistributable 2012 Update 4)已安装在系统。”
  • 嗯,这不会发生在我身上。我可以为 VS2005、VS2008、VS2010 和 VS2012 安装 vcredist——它们在我们的安装程序中对于不同的组件都是必需的。你从哪里下载的可再发行文件?听起来您正在安装不同的 VS2012 版本而不是 VS2010 版本。安装的 dll 有不同的名称。试试downloading from here
  • @RogerRowland 从这里下载(x86 和 x64):microsoft.com/en-us/download/details.aspx?id=30679

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


【解决方案1】:

首先,在 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 版本。

【讨论】:

  • 非常感谢。经过数小时的搜索,它解决了我的问题。
【解决方案2】:

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

【讨论】:

  • 我也想尝试一下。我会试一试,让你知道。
  • 这行得通。谢谢。但这是一个缺点。如果我们想要执行可调试的 exe,是否需要在每台机器上安装 Visual Studio 2010?
  • 您应该将您的应用程序的发布版本移植到其他没有安装 VS 的平台上。调试版本的应用程序和各种 Visual C++ DLL 不可再分发。要运行调试版本,您需要在目标 PC 中安装 C++ 可再分发包。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-26
  • 1970-01-01
  • 2021-07-12
  • 2013-12-13
  • 1970-01-01
  • 2019-05-04
相关资源
最近更新 更多