我遇到了Visual C ++ 2008的问题。我已经安装了opencv,并且我已经创建了一个新程序,并且我构建它没有任何错误。但是,它抱怨在调试时没有找到MSVCR90D.dll。在发布模式下,完全没有问题。
我在其中一个Winsxs文件夹中有MSVCR90D.dll。有谁知道这个问题的解决方案?这是一个已知的错误?
杰拉德
答案 0 :(得分:9)
此forum post中描述了几种可能的解决方案。看看是否有任何帮助。
从那里得到一个提示:
转到%System Drive%\ Windows \ WinSxS 并寻找目录 x86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_597c3456
如果不存在,请转到VS. 设置并确保你拥有所有 在VC ++下安装的库。
还有一个:
我有同样的问题,但修好了 通过关闭增量链接 (项目属性......链接器...... 常规...启用增量链接: 否)。
确认最后一个:
基于软件安装的项目 开车抱怨失踪 MSVCR90D.dll。问题消失了 如果你关闭增量链接 (当然,重建一切)。
答案 1 :(得分:4)
遇到同样的问题我找到了一篇帖子,引导我进入VS9.0安装中的调试DLL。对于默认安装,他们位于:C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\Debug_NonRedist\x86\Microsoft.VC90.DebugCRT
。
有三个DLL和一个清单文件。您可以将这些目录添加到System32
目录,将目录添加到PATH
环境变量中,或者在调试时将文件复制到与可执行文件相同的目录中。
增量链接可加快构建速度(链接器仅重新链接已更改的库,而不是重新链接整个项目)。否则它对构建输出没有影响。对于大型项目,我不建议关闭增量链接。
答案 2 :(得分:3)
虽然另一个VC9.0项目表现不错,但是存在同样的问题。所以我比较了两个项目设置。 关键的区别在于“项目属性” - > '配置属性' - > '清单工具' - > '输入和输出' - > '嵌入清单'。此选项必须设置为YES。
答案 3 :(得分:2)
使用Dependency Walker可以轻松解决DLL问题。它允许您分析您的应用程序,捕获启动时加载的DLL和稍后加载的DLL。它将吐出大量与加载DLL相关的消息,或者无法加载它们。它还了解DLL的SxS加载。
您可以将EXE作为参数传递给Depends.EXE,它将分析该应用程序。这可以与大多数IDE结合使用。例如,在Visual Studio中,您可以设置“Command for Debugging”。默认情况下,这是您自己的EXE。将其更改为depends.EXE,并将命令参数设置为(至少)/pb your.debug.exe
。
答案 4 :(得分:1)
使用函数File-> New-> Project From Existing Code在VC ++ 2008中重新编译项目。 它帮助了我自己,可能它会帮助你。问候。
答案 5 :(得分:1)
我已经解决了如下问题:
当你这样做时,你的项目嵌入了依赖的dll,因此它逃脱了依赖性问题。
注意:我在一个dll项目上工作并遇到了这个问题。完成上述步骤后,它适用于我的情况。
答案 6 :(得分:0)
这是我静态链接的原因之一;更大的EXE,但我从来没有像这样的依赖问题。虽然可能值得一个问题......
答案 7 :(得分:0)
我无法给出明确的解决方案,但这里有一些有用的链接:
当然,如果您按照链接在MSDN上有更多内容。
答案 8 :(得分:0)
我遇到了问题:
无法加载文件或程序集'AudioInterface,Version = 1.0.3548.29920,Culture = neutral,PublicKeyToken = null'或其依赖项之一。此应用程序无法启动,因为应用程序配置不正确。重新安装应用程序可能会解决此问题。 (HRESULT异常:0x800736B1)
AudioInterface是我的C ++项目的名称。
切换到“发布”配置,一切正常。
我跟踪它缺少与我的DLL一起的清单文件,我进一步跟踪它有一个程序集标识集。 (属性>清单工具>常规>装配标识)
我删除了此设置,并且清单放在正确的位置,一切正常。
答案 9 :(得分:0)
我没有运气就尝试了所有建议的解决方案。我终于发现"C:\WINDOWS\WinSxS\Manifests"
文件夹中缺少清单。
找到您的dll所在的C:\WINDOWS\WinSxS
中的文件夹。检查C:\WINDOWS\WinSxS\Manifests
中是否有与您的dll的文件夹名称匹配的清单。如果缺少清单,请从另一台计算机复制正确的清单并将其粘贴到清单文件夹中。清单文件名是:
“x86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_597c3456.cat”
“x86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_597c3456.manifest”
答案 10 :(得分:0)
我遇到了类似的问题,但所描述的解决方案都不适合我。
最后我做了以下事情来解决我的问题:
步骤 1: 按照@user176861 给出的建议
第 2 步: 在 VC++ 项目属性 -> 配置属性 -> 链接器 -> 清单文件中: 在“其他清单依赖项”中添加以下内容:
type='win32' name='Microsoft.VC90.CRT' version='9.0.21022.8' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b'
进行上述更改后,我可以调试了。