這兩天編譯乙個vc工程的時候出現了lnk2019錯誤,費了一番力氣解決了問題,在此做乙個總結。
lnk2019錯誤屬於鏈結錯誤,一般都會給出類似「在函式『function』中引用了無法解析的外部符號『symbol』」的錯誤提示,大部分都是由於引用了未定義的外部變數或函式,或者引用方式與宣告的不匹配造成的。
引起lnk2019錯誤的具體原因有很多種,包括引用的「extern」變數沒有定義,沒有正確載入引用的庫檔案等。但是如果你確定沒有犯這些比較低階的錯誤,還是出現了lnk2019,那麼極有可能是因為引用庫的編譯環境與應用環境有不匹配的選項引起的,這個時候你就要根據錯誤提示資訊定位引起錯誤的第三方庫,然後仔細查詢不匹配的因素。
msdn:鏈結器工具錯誤 lnk2019
c++聯結器工具錯誤:lnk2001,lnk2019
再來說我碰到的問題。我拿到的是乙個第三方庫的demo示例程式,但是這個程式是在vc6環境下給出的。我的機器上沒有vc6,所以試著將**公升級到了vc2008。編譯程式就出現了lnk2019錯誤,根據提示資訊定位問題出在demo中引用的他們自己的庫檔案。我可以確保工程環境中引用lib檔案的設定是正確的,所以可以斷定是因為公升級以後的**編譯環境與引用庫的編譯環境有不匹配項引起的。
經過一番查詢,發現是「/zc:wchar_t」這個編譯選項引起的,該選項設定是否將wchar_t視為內建的資料型別(具體請參考msdn)。在vc6中,setting of the project in "c/c++ -> language -> treat wchar_t as built-in type"項預設為no;而在vc2003以上版本中,專案屬性「c\c++」->「language」->「treat wchar_t as built-in type」項預設為yes。因此,只需要改變vc2008該項的設定為no即可。
報錯lnk2019 ,模組方同意檔案
你好!這是你第一次使用markdown編輯器所展示的歡迎頁。如果你想學習如何使用markdown編輯器,可以仔細閱讀這篇文章,了解一下markdown的基本語法知識。全新的介面設計,將會帶來全新的寫作體驗 在創作中心設定你喜愛的 高亮樣式,markdown將 片顯示選擇的高亮樣式進行展示 全新的ka...
錯誤總結 LNK2019無法解析的外部符號
在學習資料結構的時候看到了乙個線性表實現的例項,按照書上的 程式設計後,出現了錯誤lnk2019,如圖 我的專案檔案目錄如下 seqlist seqlist.h seqlist.cpp phonebook.h phonebook.cpp main.cpp 各檔案的 如下 seqlist.h prag...
使用類模板時出現LNK2019報錯的解決方案
在程式中使用類模板時,會出現類似於 錯誤 lnk2019 無法解析的外部符號 public thiscall bottle bottle int 0?bottle h qae h z 該符號在函式 main 中被引用 project9bottle f projects main.obj 1 這樣的報...