2

我正在使用 Microsoft Visual C++ 2005 构建应用程序。在对库进行重大更新后,我的清单文件中出现以下条目:

<dependency>
  <dependentAssembly>
    <assemblyIdentity type="win32" name="Microsoft.VC80.DebugCRT" version="8.0.50727.4053" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
  </dependentAssembly>
</dependency>

但是,当我查看在生成的可执行文件上使用 Dependency Walker 时,我根本没有在列表中看到 MSVC80D.DLL,这让我有点惊讶。

我还尝试将链接器设置为“详细”模式,看看它是否会告诉我清单中指示的依赖项来自哪里。唉,那里的信息没有说明问题。

我还浏览了我要链接的所有库,看看它们中是否有任何使用调试 CRT。据我所知,他们都没有。

如何确定导致此问题的库?当我按原样分发可执行文件时,我得到一个并排错误,大概是因为自动生成的清单中的这个条目。

非常感谢您提供的任何帮助......经过几天试图弄清楚发生了什么,我开始对这个问题感到非常沮丧。

4

1 回答 1

0

我想我已经找到了解决问题的方法。我决定构建一个小型测试应用程序,然后一次添加我正在使用的库。使用这种方法,我特别隔离了一个似乎导致问题的库。我确定该库没有使用 dumpbin 显示调试依赖项,但另一方面,我已经能够通过重建该库来消除不需要的清单行。

于 2011-06-09T13:40:56.463 回答