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 \ mydocuments \ visual studio 2010 \ Projects \ SFML \ Debug\sfml-graphics.dllのマニフェストntstatus0xc0150002のプローブに失敗しました
    デバッガー::プロセスのロード中に未処理の継続不可能な例外がスローされました
    プログラム'[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)がLinkerの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

これはおそらく、SFMLが別のバージョンのVisual C ++でコンパイルされていることが原因です(2008年または2005年だと思います)。対応するマニフェストファイルとmsvc*.dllライブラリが不足しているようです。マニフェストの調整に関する多くの問題を回避できるため、VS2010を使用してSFMLを自分で再コンパイルすることをお勧めします。

于 2010-08-21T12:04:51.087 に答える
3

プロジェクトプロパティのランタイム構成を変更して修正しました:リリースの場合は/ MT、デバッグの場合は/ MTd(プロジェクトプロパティ> C / C ++>コード生成>ランタイムライブラリ)

于 2012-04-10T07:24:19.270 に答える
2

次の設定を使用して、VS2010デバッガーでexeを実行します。

  1. [デバッグ]->[オプションと設定]->[デバッグ]->[出力ウィンドウ]->[モジュールロードメッセージ]-オン
  2. デバッグ->例外->Win32例外->c0000135DLLが見つかりません(オンになっている必要があります)

さて、どのDLLがロードに失敗したかを特定するのに役立つはずだと思います。

于 2010-08-21T12:17:47.147 に答える
1

Microsoft Visual Studio 2010は、2008ビルドのSFMLと互換性がありませんでした。2010を使用せず、Dev-C ++ inseadを使用することで、問題を修正しました。

于 2010-08-29T15:16:04.667 に答える
0

Visual Studio 2015を使用している場合は、プラットフォームツールセットをVS2010またはVS2008に変更してください。このオプションは、[プロジェクト]->[プロパティ]->[構成プロパティ]->[一般]で使用できます。

于 2016-01-27T11:54:39.767 に答える