链接(随机?)失败与Visual调试DLL

时间:2009-05-28 15:13:58

标签: visual-studio debugging linker

我在Visual 2005或2008下定期讨论这个问题:

当我编译一堆DLL(本机C,C ++,托管)时,有时,其中很少没有与某些微软调试DLL正确链接。输出没有提到任何内容(没有警告,没有错误)。在我启动程序并获得“未找到模块异常”之前我无法了解。没有更多解释。

当我使用Dependency Walker打开我的Dlls时,有些人缺少 MSVCR90D.DLL MSVCP90D.DLL 。如果我处于一个幸运的时刻,我只需要重建损坏的dll以获得有效的dll。在最坏的情况下,重建会产生另一个损坏的dll,直到一个神秘的时刻(几小时或几天后),当一个有效的dll ...听起来很疯狂,不是吗?

有效的dll有这种路径:

C:\ WINDOWS \ WINSXS \ x86_microsoft.vc90.debugcrt_1fc8b3b9a1e18e3b_9.0.30729.1_x-ww_f863c71f \ MSVCP90D.DLL

这让我疯了!...有什么想法吗?感谢。

2 个答案:

答案 0 :(得分:1)

使用/ MT而不是/ MD进行构建。

答案 1 :(得分:1)

也许它对使用哪个dll感到困惑。在C:\ Program files \ Visual Studio下搜索??? 对于MSVCR90D.DLL,它应该在C:\ Program files \ Visual Studio ??? \ sdk ... \ bin下 我不确定你的版本。 然后在您的环境PATH中,在那里设置该路径以查看该bin路径。

我见过很多次有同名和程序的dll 对它应该链接哪一个感到困惑。 试试看,看看是否有帮助