确定 MSVC 清单生成器中的依赖项来源
我正在使用 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。据我所知,他们都没有这样做。
如何确定哪个库导致了此问题?当我按原样分发可执行文件时,出现并行错误,可能是由于自动生成的清单中的此条目所致。
非常感谢您提供的任何帮助...经过几天的尝试弄清楚发生了什么事之后,我开始对这个问题感到非常沮丧。
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.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我想我已经找到了解决问题的方法。我决定构建一个小型测试应用程序,然后一次添加我正在使用的库。使用这种方法,我特别隔离了一个似乎导致问题的库。我确信该库没有使用 dumpbin 显示调试依赖项,但另一方面,我已经能够通过重建该库来消除不需要的清单行。
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.