c++ - 用 VS2013 编译的应用程序需要 VS2005 运行时

标签 c++ visual-studio

我有安装了 VisualStudio 2005 和 VisualStudio 2013 的环境。我对一些项目有奇怪的情况。我使用 VS2013 编译此类项目,当我尝试通过资源管理器或命令行启动它们时出现错误 - “程序无法启动,因为缺少 MSVCR80.dll ...”。为什么我用 msvcr120 编译时出现 msvcr80?

我尝试过的:

  1. 将msvc*80.dll 放入可执行目录。我收到运行时错误“R6034。应用程序已尝试错误地加载 C 运行时库...”

  2. 使用 Dependency Walker 检查二进制依赖项。我看到二进制文件依赖于 VS2013 运行时,并且没有提到 msvcr80.dll

  3. 使用空 PATH 启动二进制文件。我没有产生任何积极影响。
  4. 在另一台“干净”的电脑上启动了二进制文件。它在 vs2013 运行时运行良好。

这怎么可能?

最佳答案

谢谢大家,你是对的。我只是忘了,我已经安装了我的产品的旧版本。它在后台启动并使用旧版本的库。因此,当我运行我的新应用程序时,它会尝试使用已经加载的库。以另一种方式,Dependecy walker 不检查已经加载的库,而只在 PATH 中查找。

有关 DLL 加载的 MSDN 链接 - https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms682586(v=vs.85).aspx

关于c++ - 用 VS2013 编译的应用程序需要 VS2005 运行时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33844690/

相关文章:

c++ - 使用带有 GIT 和 Visual Studio 2005 的分支防止完全重建

c++ - 使用 std::copy 时 istream_iterator 无效

c# - Winforms 图形闪烁。 (双缓冲没有帮助!)

c# - 有没有办法折叠所有 C# 代码块,忽略#region 定义?

c++ - 如何解决这个编译错误

c++ - C++ 中的 char 星 vector

C++ Fork Join 并行阻塞

visual-studio - Visual Studio为每个列表创建1个功能

c++ - 复制线程安全吗?

c# - 在 Visual Studio 中是否有与 'go to definition' 相反的东西?