3

我正在尝试编译我在 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 的值,但我找不到执行此操作的选项,有谁知道我可以如何更改它?

4

5 回答 5

3

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

于 2012-04-10T07:24:19.270 回答
3

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

于 2010-08-21T12:04:51.087 回答
2

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

  1. Debug->Options and Settings->Debugging->Output Window->Module Load Messages -- On
  2. Debug->Exceptions->Win32 Exceptions->c0000135 Unable to Locate DLL (应该是On)

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

于 2010-08-21T12:17:47.147 回答
1

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

于 2010-08-29T15:16:04.667 回答
0

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

于 2016-01-27T11:54:39.767 回答