我正在尝试编译我在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的值,但我找不到这样做的选项,是否有人知道如何更改它?
答案 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:
现在,我认为,它应该可以帮助您确定哪个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中可用。