在C 中,使用自訂malloc/free 庫重載new 和delete運算子可能會導致將靜態庫與C 程式碼組合時出現連結錯誤。儘管確保了正確的連結順序,但由於名稱重整,可能會出現未定義的參考錯誤。
C 編譯器使用稱為名稱重整的機制,該機制會修改函數名稱以包含參數和參數等詳細資訊傳回類型。這確保了具有不同簽名的重載函數可以在程式中共存。
將靜態 C 函式庫與 C 程式碼連結時,連結器需要來自函式庫的函式名稱以符合 C 編譯器產生的損壞名稱。但是,C 編譯器不套用名稱修改。
要解決此問題,請將引用 C 庫的函數聲明括在 extern "C" 中“堵塞。 >透過抑制名稱修改,連結器可以在靜態庫中找到正確的符號定義並解決未定義的參考錯誤。
以上是如何解決將靜態 C 庫與 C 程式碼連結時出現「未定義引用」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!