1. lnk2019
LNK2019錯誤一般是 compile 能找到 header(.h)文件,但是在鏈接時找不到需要的 lib 庫文件或者是 dll 文件。
一般認爲在編譯 OSG 簡單示例的時候遇到這樣的錯誤是因爲錯誤的設置了 lib2。OSG 的 lib 目錄中一般有兩組文件名相似的 lib 文件,其中一組以 d 結尾,例如:osgDBd.lib, osgViewerd.lib,這個表示該 lib 是用於調試 debug,而不帶 d 的一組是用於 release 版本。
如果沒有正確的指定 lib 文件,那麼一般會出現 error LNK2019 錯誤。比如,編譯時指定的是 debug, 但是依賴項設置的卻是不帶 d 的那一組 release 版本的 lib 文件;或者是編譯時指定 debug,但是依賴項設置的是帶 d 的一組。只要編譯的選項和調用的 lib 一致即可解決這個問題。
不過我仔細檢查了自己調用的 lib,編譯的選項和調用的 lib 都是 debug 版本的。
後來發現,開發機器是64位的,而編譯選項的目標平臺(platform)選擇的卻是 win32,修改爲 x64 之後解決了這個鏈接錯誤。
也看到有人說1,前面函數聲明與後面的函數定義參數類型不同時,有時 compile 能夠通過,但是 link 的時候會出現 error LNK2019 錯誤。
參考鏈接: