ホームページ > バックエンド開発 > C++ > SDL2 で未解決の外部シンボル __imp__fprintf および __imp____iob_func が発生するのはなぜですか?

SDL2 で未解決の外部シンボル __imp__fprintf および __imp____iob_func が発生するのはなぜですか?

Linda Hamilton
リリース: 2024-11-28 15:50:15
オリジナル
709 人が閲覧しました

Why Am I Getting Unresolved External Symbols __imp__fprintf and __imp____iob_func with SDL2?

未解決の外部シンボル: SDL2 の __imp__fprintf および __imp____iob_func

プログラミングにおいて、未解決の外部シンボルが発生することは、リンク エラーとして現れる一般的な問題です。 SDL2 でこのようなエラーを頻繁に引き起こす 2 つの特定のシンボルは、__imp__fprintf と __imp____iob_func です。

__imp__fprintf の未解決の外部シンボルは、フォーマットされた印刷に使用される fprintf がダイナミック リンク ライブラリ (DLL) に配置されているために発生します。通常、コンパイラーは実行時にこれらのライブラリにリンクしますが、リンカーが適切な DLL を見つけられない場合があります。これは、DLL がシステム パスに存在しない場合、または間違ったバージョンがリンクされている場合に発生する可能性があります。

一方、__imp____iob_func 未解決の外部シンボルは、C の標準入出力 (I/O) に関連しています。 ) 機能。特に、Visual Studio 2015 では、stdin、stdout、stderr などの I/O 関数の定義に変更が加えられました。これらの関数は __acrt_iob_func を使用して定義されるようになりましたが、以前のバージョンでは __iob_func を使用して定義されていました。これにより、古いバージョンの Visual Studio でコンパイルされたライブラリまたはコードを使用するときにリンク エラーが発生する可能性があります。

これらの未解決の外部シンボル エラーを解決するには、次の手順を実行できます。

  • __imp__fprintf の msvcrt.dll などの必要な DLL がシステムに存在することを確認します。
  • 正しいバージョンの SDL2 ライブラリと DLL にリンクしていることを確認してください。
  • __imp____iob_func が原因の場合は、コード内で __iob_func を定義して、次の内容を含む配列を返します。 {stdin,stdout,*stderr}.
  • 他の stdio 関数のエラーに対処するには、legacy_stdio_settings.lib をリンカー オプションに追加します。

次のようにします手順を実行すると、__imp__fprintf および __imp__fprintf に関連する未解決の外部シンボル エラーに効果的に対処できます。 Visual Studio 2015 で SDL2 を使用する場合の __imp____iob_func。

以上がSDL2 で未解決の外部シンボル __imp__fprintf および __imp____iob_func が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート