我有安装了 VisualStudio 2005 和 VisualStudio 2013 的环境。我对一些项目有奇怪的情况。我使用 VS2013 编译此类项目,当我尝试通过资源管理器或命令行启动它们时出现错误 - “程序无法启动,因为缺少 MSVCR80.dll ...”。为什么我用 msvcr120 编译时出现 msvcr80?
我尝试过的:
将msvc*80.dll 放入可执行目录。我收到运行时错误“R6034。应用程序已尝试错误地加载 C 运行时库...”
使用 Dependency Walker 检查二进制依赖项。我看到二进制文件依赖于 VS2013 运行时,并且没有提到 msvcr80.dll
- 使用空 PATH 启动二进制文件。我没有产生任何积极影响。
- 在另一台“干净”的电脑上启动了二进制文件。它在 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/