在Visual Studio 2015 中編譯SDL2 專案時,開發人員可能會遇到未解析的外部符號__imp__fprintf和__imp____iob_func.
根本問題源自於 Visual Studio 2015 對 stdin、stderr 和 stdout 的定義與先前的版本不同。在舊版 Visual Studio 中,這些被定義為指向包含三個標準 IO 流的陣列的巨集。但是,在 Visual Studio 2015 中,它們是使用 __acrt_iob_func() 定義的。
因此,使用先前的Visual Studio 版本編譯的依賴於stdin、stderr 和stdout 的舊定義的程式碼將遇到未定義的參考連結到使用Visual Studio 2015 編譯的函式庫(.lib) 時到__iob_func()。
到解決這個問題,一個解決方案是手動將 __iob_func() 定義為包含 {stdin, stdout, *stderr} 的陣列。這確保程式碼具有對 __iob_func() 的必要引用。
此外,任何使用 stdio 函數(例如 scanf、printf)的程式碼也可能會遇到無法解析的外部符號。為了解決這個問題,開發人員可以將legacy_stdio_definitions.lib 加入到他們的連結器選項中。該函式庫提供了缺少的 stdio 函數的定義。
以上是為什麼我的 SDL2 Visual Studio 2015 專案中出現未解析的外部符號 __imp__fprintf 和 __imp____iob_func?的詳細內容。更多資訊請關注PHP中文網其他相關文章!