应用程序无法正确初始化(0xc0150002)

时间:2010-08-21 11:25:34

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

我正在尝试编译我在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': Loaded 'C:\Documents and Settings\Greg\My Documents\Visual Studio 2010\Projects\SFML\Debug\SFML.exe', Symbols loaded.
    'SFML.exe': Loaded 'C:\WINDOWS\system32\ntdll.dll', Cannot find or open the PDB file
    'SFML.exe': Loaded 'C:\WINDOWS\system32\kernel32.dll', Cannot find or open the PDB file
    'SFML.exe': Loaded 'C:\Documents and Settings\Greg\My Documents\Visual Studio 2010\Projects\SFML\Debug\sfml-graphics.dll', Cannot find or open the PDB file
    LDR: LdrpWalkImportDescriptor() failed to probe C:\Documents and Settings\Greg\my documents\visual studio 2010\Projects\SFML\Debug\sfml-graphics.dll for its manifest, ntstatus 0xc0150002
    Debugger:: An unhandled non-continuable exception was thrown during process load
    The program '[2792] SFML.exe: Native' has exited with code -1072365566 (0xc0150002).

修改

我试图重新编译库但是我收到了这个错误:

    C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(990,5): warning MSB8012: TargetPath(C:\SFML-1.5\build\vc2008\..\..\Temp\vc2008\sfml-network\Debug DLL\sfml-network.dll) does not match the Linker's OutputFile property value (C:\SFML-1.5\lib\vc2008\sfml-network-d.dll). This may cause your project to build incorrectly. To correct this, please make sure that $(OutDir), $(TargetName) and $(TargetExt) property values match the value specified in %(Link.OutputFile).
    C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(992,5): warning MSB8012: TargetName(sfml-network) does not match the Linker's OutputFile property value (sfml-network-d). This may cause your project to build incorrectly. To correct this, please make sure that $(OutDir), $(TargetName) and $(TargetExt) property values match the value specified in %(Link.OutputFile).

我需要更改TargetPath的值,但我找不到这样做的选项,是否有人知道如何更改它?

5 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

我通过更改项目属性运行时配置来修复它:/ MT for release和/ MTd for debug(项目属性> C / C ++>代码生成>运行时库)

答案 2 :(得分:2)

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

  1. 调试 - >选项和设置 - >调试 - >输出窗口 - >模块加载消息 - 开启
  2. Debug-> Exceptions-> Win32 Exceptions-> c0000135无法找到DLL(应该打开)
  3. 现在,我认为,它应该可以帮助您确定哪个DLL无法加载。

答案 3 :(得分:1)

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

答案 4 :(得分:0)

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