包含vld.h后,“应用程序无法正确启动”

问题描述 投票:17回答:5

我在Visual Studio 2010的Win32项目中包含了vld.h,vld.lib和vld_x86.dll。它构建正确,但是当我执行时,它会崩溃并显示以下消息:

"The application was unable  to start correctly (0xc0150002). Click OK to close the application."

我使用Dependency Walker运行它,但它显示并排错误如下:

Error: The Side-by-Side configuration information for "D:\project\..\debug\VLD_X86.DLL" contains errors. The application has failed to start because its side-by-side configuration is incorrect.)

我尝试了各种方法,包括修改清单,如下所示:

https://vld.codeplex.com/discussions/360243

如果我在vld.h上注释了以下行,它只能正常运行

// Force a symbolic reference to the global VisualLeakDetector class object from
// the DLL. This ensures that the DLL is loaded and linked with the program,
// even if no code otherwise imports any of the DLL's exports.
//#pragma comment(linker, "/include:__imp_?g_vld@@3VVisualLeakDetector@@A")

但是,如果我注释掉该行,则vld根本不输出任何内容(就像没有vld集成一样)

以前有这个问题的人吗?任何建议将不胜感激,提前谢谢!

c++ visual-studio-2010 memory-leaks visual-leak-detector
5个回答
23
投票

我也有这个问题,你需要将所有这些文件添加到与vld_x86.dll / vl_x64.dll相同的目录中:

Microsoft.DTfW.DHL.manifest

dbghelp.dll

它来自Visual Leak Detector的Win32 / Win64 bin文件夹。发现这个来自:https://vld.codeplex.com/wikipage?title=Building%20Visual%20Leak%20Detector%20from%20Source


2
投票

我也有这个问题(这个错误信息)。在我的情况下,vld_x86.dll(很可能是在预期版本之外的其他版本)是由其他软件预安装和注册的。 (似乎每个人都喜欢VLD)因此,在VLD构建的路径中加载了它而不是vld_x86.dll。取消注册外部DLL解决了这个问题。

因此,您可能需要检查输出以从异常路径加载DLL。


0
投票

如果您正在使用可视化工作室: - 最简单的修复,如果您没有在包含中弄乱您的项目属性,链接器部分确保您没有手动添加VLD。而是清除您在此处制作的包含并保存您的项目。 - 关闭它然后安装最新的VLD,它将自动为您的可视工作室项目创建包含父继承,包括环境路径。


0
投票

其他人可能仍然会遇到这个问题; 一个潜在的解决方法是安装VLD版本2.5.1,可以从github下载:https://github.com/KindDragon/vld/releases/tag/v2.5.1

它带来了上面解释的修复,它包括dbghelp.dll


0
投票

我在安装vld之后尝试运行项目时遇到了这样的错误。我的解决方案是重新登录。因为vld安装程序会向PATH添加新路径,而VS在没有重新登录的情况下也看不到它们。否则,您可以使用复制文件dbghelp.dll和.manifest的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.