2017-12-02 253 views
0

我有一些C代碼在Visual Studio的每個版本中編譯,直到我升級到2017年。出於某種原因,升級過程打破了導致超過400個鏈接的鏈接器引用錯誤的東西,如HWND,SendMessage等在Visual Studio 2017中獲取errno上的鏈接錯誤lnk2001

我通過鏈接器屬性輸入列表淹沒,並添加user32.lib,gdi32.lib和其他一些解決大多數缺失的外部符號錯誤,但無法擺脫最後2個錯誤。他們兩個都在尋找_errno哪些老C人員會認爲是文件系統錯誤結果變量。我明確地將libcmtd.lib添加到我的鏈接器輸入列表中,但仍然沒有快樂。

如何解決VS2017中最後一個鏈接錯誤?

+0

根據項目的複雜程度,我會考慮重新創建它,而不是試圖修復參考。 – SoronelHaetir

回答

0

答案原來是VS2017改變了errno.h文件來聲明errno。在過去的Visual Studio實現中,errno.h只是errno各種返回值的定義列表。在VS2017中,errno.h有條件地聲明瞭errno。

如果errno爲零或沒有,我的文件只是關心errno的外部引用,所以我沒有打擾在文件中包含errno.h。

所需要的只是將errno.h包含在對errno進行外部引用的文件中。

VS2017的變化很有道理,所以它有點奇怪,它沒有做得太早。