Visual Studio 2015 で SDL2 プロジェクトをコンパイルすると、開発者は未解決の外部シンボル __imp__fprintf および __imp___iob_func に遭遇する可能性があります。 __imp____iob_func.
根本的な問題は、Visual Studio 2015 の stdin、stderr、および stdout の定義が以前のバージョンとは異なるという事実に起因しています。古い Visual Studio リリースでは、これらは 3 つの標準 IO ストリームを含む配列を指すマクロとして定義されていました。ただし、Visual Studio 2015 では、これらは __acrt_iob_func() を使用して定義されます。
その結果、stdin、stderr、stdout の古い定義に依存する以前の Visual Studio バージョンでコンパイルされたコードでは、未定義の参照が発生します。 Visual Studio でコンパイルされたライブラリ (.lib) にリンクする場合の __iob_func() へのリンク2015.
この問題を解決するための 1 つの解決策は、__iob_func() を {stdin、stdout、*stderr} を含む配列として手動で定義することです。これにより、コードに __iob_func() への必要な参照が確実に含まれます。
さらに、stdio 関数 (scanf、printf など) を使用するコードでも、未解決の外部シンボルが発生する可能性があります。これに対処するために、開発者は、legacy_stdio_settings.lib をリンカー オプションに追加できます。このライブラリは、不足している stdio 関数の定義を提供します。
以上がSDL2 Visual Studio 2015 プロジェクトで未解決の外部シンボル __imp__fprintf および __imp____iob_func が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。