Search code examples
visual-studiovisual-c++manifestwinsxs

Determining source of dependencies in MSVC's manifest generator


I am building an application using Microsoft Visual C++ 2005. After a major update of libraries, I am getting the following entry in my manifest file:

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

However, when I look use the Dependency Walker on the resulting executable, I don't see MSVC80D.DLL in the list at all, which is a bit surprising to me.

I've also tried setting the linker to "verbose" mode, to see if it would tell me where the dependency indicated in the manifest is coming from. Alas, the information there doesn't shed any light on the problem.

I've also gone through all the libraries I'm linking to see if any of them use the debug CRT. As near as I can tell, none of them do.

How can I determine what library is causing this issue? When I distribute the executable as it is, I get a side-by-side error, presumably because of this entry in the auto-generated manifest.

Thanks so much for any help you can offer... After a few days of trying to figure out what's going on, I'm starting to get really frustrated with the problem.


Solution

  • I think I've found the solution to my problem. I decided to build a small test app, then add the libraries I'm using one at a time. Using this method, I isolated one library in particular that seemed to be causing the problem. I'm certain the library didn't show debug dependencies using dumpbin, but, on the other hand, I have been able to eliminate the unwanted manifest line by rebuilding that library.