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

SDL2 Visual Studio 2015 プロジェクトで未解決の外部シンボル __imp__fprintf および __imp____iob_func が発生するのはなぜですか?

Susan Sarandon
リリース: 2024-11-28 09:33:10
オリジナル
265 人が閲覧しました

Why am I getting Unresolved External Symbols __imp__fprintf and __imp____iob_func in my SDL2 Visual Studio 2015 Project?

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

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 サイトの他の関連記事を参照してください。

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