由於在下修課緣故,教授所用的平台為Windows + Visual Studio2010
可是平常時我都是使用 Vim + Clang(LLVM) 所以對於這套 M$ 出品的 VS 頗難上手
遇到些丟出的訊息也是不知道怎麼處理
有時候網路上的解決方案也是無效,因此特別整理一篇疑難雜症集來紀錄
希望也能幫上遇到相同問題的人
請特別注意,以下事項皆針對課堂的作業所進行的解決方案,不一定是泛用型
(本文不定時更新,另外,如果有遇到什麼問題也歡迎一起來討論)
1.
error LNK2019(2001, etc): 無法解析的外部符號 ...... 在函式 _main 中被參考這種類型的錯誤大部份是已經有宣告了某個函式,可是忘記實作細節
當 compiler 跑到那行的時候,因為沒辦法用,所以就丟出這個訊息
解決方案:
先把沒實作的函式註解掉,或是先在函式實作的地方執行一些動作(like std::cout<<"Wait\n";)2.
function/object/etc.....在XXX.lib已被定義......這類型的問題在作業裡頭可能是他有定義些東西,但是你的 Overload 沒有全部實作完導致
解決方案:
就是把該 Class 裡面的所有被要求 Overwrite 的 function 全部實作完畢就可以過了(如果有高手知道原因,請一定要跟我說,我真的很想知道為什麼會有這個錯誤訊息)
3.
執行期間出現未預期的例外處理 0X0...c 存取到 0X0000...000 的違規存取位置通常就是在程式裡不小心存取到非法的記憶體位置(like array[-1], access NULL pointer, etc)
解決方案:
如果是陣列的話,請在有使用變數index的地方特別注意有沒有超出邊界如果是linked list的話,可能想要讀NULL所指的東西,請檢查有使用到pointer的地方
4.
執行期間在單元測試裡 Crash 掉,由於單元測試的碼未公開,無法直接單行追蹤解決方案:
先根據給出的錯誤訊息判斷哪個區塊可能比較容易 Crash,通常都是在動到指標的地方在所有容易更動 Object 裡頭值的 function 裡把輸入的參數以及有更動到的變數皆印出在螢幕上
便可以追蹤到正確失誤的地方
5.
編譯前出現 XXX function / XXX is Unaccessed解決方案:
通常出現這個訊息時,代表著你使用到 class 裡的 private 成員請檢查你取用的 XXX 是否被宣告為 private
0 意見:
張貼留言
湖水偶然間遇上詩人的一片雲,而你因為機緣踏入這裡
何不留下一絲的吉光片羽呢?