首頁 > 後端開發 > 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
原創
206 人瀏覽過

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.

根本問題源自於 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板