【问题标题】:The application failed to initialize properly (0xc0150002)应用程序未能正确初始化 (0xc0150002)
【发布时间】:2011-04-02 00:48:16
【问题描述】:

我正在尝试编译我在 Visual C++ 2010 中编写的 SFML 程序。它编译得很好,但是当我运行可执行文件时出现此错误:

The application failed to initialize properly (0xc0150002). Click on OK to terminate the application.

每次我尝试运行使用 SFML 的应用程序时都会发生这种情况,我已经包含了我在外部依赖项中使用的库,库和包含库都在 lib 中,并且在 VC 文件夹和 DLL 中包含文件和我的exe在同一个文件夹中。我该如何解决这个问题?

编辑

这是调试器的调试输出:

“SFML.exe”:已加载“C:\Documents and Settings\Greg\My Documents\Visual Studio 2010\Projects\SFML\Debug\SFML.exe”,已加载符号。 “SFML.exe”:已加载“C:\WINDOWS\system32\ntdll.dll”,找不到或打开 PDB 文件 “SFML.exe”:已加载“C:\WINDOWS\system32\kernel32.dll”,找不到或打开 PDB 文件 “SFML.exe”:已加载“C:\Documents and Settings\Greg\My Documents\Visual Studio 2010\Projects\SFML\Debug\sfml-graphics.dll”,找不到或打开 PDB 文件 LDR:LdrpWalkImportDescriptor() 未能探测 C:\Documents and Settings\Greg\my documents\visual studio 2010\Projects\SFML\Debug\sfml-graphics.dll 的清单,ntstatus 0xc0150002 调试器:: 进程加载期间引发了未处理的不可持续异常 程序“[2792] SFML.exe: Native”已退出,代码为 -1072365566 (0xc0150002)。

编辑

我已尝试重新编译该库,但出现此错误:

C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(990,5): 警告 MSB8012: TargetPath(C:\SFML-1.5\build\vc2008\..\..\Temp \vc2008\sfml-network\Debug DLL\sfml-network.dll) 与链接器的 OutputFile 属性值 (C:\SFML-1.5\lib\vc2008\sfml-network-d.dll) 不匹配。这可能会导致您的项目构建不正确。要更正此问题,请确保 $(OutDir)、$(TargetName) 和 $(TargetExt) 属性值与 %(Link.OutputFile) 中指定的值匹配。 C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(992,5): 警告 MSB8012: TargetName(sfml-network) 与链接器的 OutputFile 属性值不匹配 (sfml-network-d )。这可能会导致您的项目构建不正确。要更正此问题,请确保 $(OutDir)、$(TargetName) 和 $(TargetExt) 属性值与 %(Link.OutputFile) 中指定的值匹配。

我需要更改 TargetPath 的值,但我找不到执行此操作的选项,有人知道如何更改吗?

【问题讨论】:

    标签: c++ sfml visual-c++-2010-express


    【解决方案1】:

    这可能是因为 SFML 是用另一个版本的 Visual C++ 编译的(我猜是 2008 年甚至 2005 年)。您显然缺少相应的清单文件和 msvc*.dll 库。我建议您自己使用 VS 2010 重新编译 SFML,因为它可以为您省去大量调整清单的麻烦。

    【讨论】:

      【解决方案2】:

      我通过更改项目属性运行时配置来修复它:/MT 用于发布和 /MTd 用于调试(项目属性 > C/C++ > 代码生成 > 运行时库)

      【讨论】:

        【解决方案3】:

        使用以下设置在 VS 2010 调试器中运行 exe:

        1. Debug->Options and Settings->Debugging->Output Window->Module Load Messages -- On
        2. Debug->Exceptions->Win32 Exceptions->c0000135 无法定位 DLL(应该打开)

        现在,我认为,它应该可以帮助您确定哪个 DLL 加载失败。

        【讨论】:

        【解决方案4】:

        Microsoft Visual Studio 2010 与 SFML 的 2008 版本不兼容。我通过不使用 2010 并使用 Dev-C++ insead 解决了这个问题。

        【讨论】:

          【解决方案5】:

          如果您使用的是 Visual Studio 2015,请将 Platform Toolset 更改为 VS 2010 或 VS 2008。此选项在 Project->Properties->Configuration Properties->General 中可用。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-09-10
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-03-19
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多