在包含vld.h之后,应用程序无法正确启动。

19

我在使用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 集成一样)。

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

5个回答

25

1
这个答案救了我的一天。在我将CEF1升级到CEF3后,我的项目开始显示“0xc0150002”,将“Microsoft.DTfW.DHL.manifest”添加到其他2个dll(vld版本v2.4rc2)的相同文件夹中解决了这个问题。 - sunpochin
1
我正在使用 Windows 7 64 位系统,尝试将我的项目编译为 32 位系统,但该方法对我不起作用。(我只是将文件夹...\ConsoleApplication2\packages\VisualLeakDetector.2.5.0.0\lib\native\address-model-32\lib中的所有文件复制到了...\ConsoleApplication2\中) - ged

2
我也遇到了这个问题(这个错误信息)。在我的情况下,vld_x86.dll预安装并由其他软件注册,版本很可能与预期的不同。 (似乎每个人都喜欢VLD)因此,它被加载而不是路径VLD构建的vld_x86.dll。取消注册外部DLL解决了问题。
因此,您可能需要检查来自异域路径的DLL加载输出。

0

如果您正在使用Visual Studio

  • 如果您没有在包含、链接器部分中混淆项目属性,最简单的解决方法是确保您没有手动添加VLD。而是清除您在此处所做的包含并保存您的项目。

  • 关闭它,然后安装最新的VLD,它将自动为您的Visual Studio项目创建包含父继承,包括环境路径。


0

0
当我安装vld并尝试运行项目时,出现了这样的错误。对我来说,解决方案是重新登录。因为vld安装程序将新路径添加到PATH中,而不重新登录,VS看不到它们。否则,您可以使用复制文件dbghelp.dll和.manifest的解决方案。

在这种情况下,只需重新启动VisualStudio即可,无需重新登录。 - Gediminas
我曾尝试过仅重启VisualStudio,但没有重新登录是无法解决问题的。 - Val

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接