我有一个Visual Studio 2008(SP1)程序,调试版本,32位,似乎无法找到调试运行时DLL(多线程调试DLL)。调试版本找不到调试运行时DLL
但是,疯狂的事情是,depend.exe显示必需的DLL作为存在(也缺少)。它实际上看起来像试图加载这些DLL两次。
以下是来自depend.exe的屏幕截图的链接,显示了我正在谈论的内容 - 分析作为解决方案一部分的库。
当我启动程序时,我得到“程序无法启动,因为MSVCP90D.dll从您的计算机中丢失,请尝试重新安装程序来解决此问题。”
如果我进入sxs目录并将“丢失”DLL复制到与二进制文件相同的目录中,程序将运行。
应用程序清单指定了正确的DLL版本(由depend.exe找到它们证明)。我已经检查过该版本的运行时间的清单,并且对于我未经训练的眼睛来说它看起来合法。
该二进制文件本身显示与链接图像中检查的DLL相同的问题,但也与MSVCP90D.DLL丢失(并存在)相同。
我已经尝试过建立内部/外部清单,关闭和打开增量链接,正如其他地方所建议的,都无济于事。我会尝试链接一个非DLL运行时,但是我使用的库在许多解决方案中共享,所以改变它们的构建方式并不是一个真正的选择(除非当然,这是唯一的解决方案到一个已知的问题,我的谷歌搜索没有出现)。
我试过运行sxstrace,但是大多数时候输出是空的(!),当它不是空的时候它不显示错误。
我试过使用windbg,但没有得到任何好处,因为我对该工具没有特别的经验,也不确定我在找什么。
我在64位Windows 7上运行。我早期的想法之一是,在我的盒子上安装了VS2005,2008和2010都导致了一些奇怪的问题,但我没有发现证据支持这种假设。
(PS貌似相似的问题,因为这msvcp90d.dll is missing msvcr90d.dll据我可以看到实际上并没有得到解决,而且还提到了C# - 我的项目是纯C++)。
您是否在运行该程序的计算机上运行该程序?您安装VS2005,2008和2010的顺序是什么? – cup
是,在一台机器上构建并运行。按照时间顺序安装。 – Rodyland