Apabila menyusun projek SDL2 dalam Visual Studio 2015, pembangun mungkin menghadapi simbol luaran yang tidak dapat diselesaikan __fprint danimp __imp____iob_func.
Isu asas berpunca daripada fakta bahawa Visual Studio 2015 mentakrifkan stdin, stderr dan stdout secara berbeza daripada versi sebelumnya. Dalam keluaran Visual Studio yang lebih lama, ini ditakrifkan sebagai makro yang menunjuk kepada tatasusunan yang mengandungi tiga aliran IO standard. Walau bagaimanapun, dalam Visual Studio 2015, ia ditakrifkan menggunakan __acrt_iob_func().
Akibatnya, kod yang disusun dengan versi Visual Studio sebelumnya yang bergantung pada takrifan lama stdin, stderr dan stdout akan menemui rujukan yang tidak ditentukan. kepada __iob_func() apabila memaut dengan perpustakaan (.lib) yang disusun dengan Visual Studio 2015.
Untuk menyelesaikan isu ini, satu penyelesaian ialah dengan mentakrifkan __iob_func() secara manual sebagai tatasusunan yang mengandungi {stdin, stdout, *stderr}. Ini memastikan bahawa kod tersebut mempunyai rujukan yang diperlukan kepada __iob_func().
Selain itu, sebarang kod yang menggunakan fungsi stdio (cth., scanf, printf) juga mungkin menghadapi simbol luaran yang tidak dapat diselesaikan. Untuk menangani perkara ini, pembangun boleh menambahkan legacy_stdio_definitions.lib pada pilihan pemaut mereka. Pustaka ini menyediakan takrifan untuk fungsi stdio yang tiada.
Atas ialah kandungan terperinci Mengapakah saya mendapat Simbol Luaran Tidak Selesai __imp__fprintf dan __imp____iob_func dalam Projek SDL2 Visual Studio 2015 saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!