Qt技巧:Error LNK2019解決辦法
1、標頭檔案中聲明瞭函式或者型別,但是沒有相關的實現原始檔
解決:在編譯結果中找到並定位該函式,刪去多餘的定義並對未實現的定義進行實現;注意刪去Debug和Release資料夾,並重新構建。
2、呼叫了第三方庫,但是未連結成功
解決:重新新增庫的.lib和.dll及相關.h檔案,刪除Debug和Release資料夾並重新構建。
================================================================================
PS:
我在呼叫HIDAPI的專案中,解除安裝重灌VS後遇到LNK2019 error,但是以上方法都不起作用。最後解決問題頗費波折:
①首先刪去Debug和Release資料夾,並重新構建,無效;
②重新載入.lib和.dll及.h,重新構建,無效;
③重新編譯第三方庫,注意平臺對應(Qt 用msvc2015_x86,則VS2015編譯平臺選擇Win32;Qt 用msvc2015_x64,則VS2015編譯平臺選擇x64),無效;
④重灌Qt、Visual Studio,無效;
⑤刪除Qt快取,包括:
C:\Users\jiche\AppData\Local\QtProject
C:\Users\jiche\AppData\Roaming\QtProject
最終解決問題。分析原因可能是之前工程連結庫檔案出錯,但是配置已經記錄到工程配置檔案和Qt快取中,即使重灌Qt,快取檔案還在。因此只有清楚了Qt的快取才能奏效。
Qt重新構建的檔案殘留問題無力吐槽~只能說習慣就好~
================================================================================
2017-5-12 更新
匯入載入了第三方的Qt工程到新的Qt開發環境中,老是出現“xxx不存在”的報錯,概要資訊顯示:
Running Windows Runtime device detection.
No winrtrunner.exe found.
嘗試了各種方法,包括清除Qt工程的cache,重新編譯第三方庫,過載庫,都無效。最後發現工程中添加了庫檔案的.c和.h原始檔,將.c從專案列表去除後,刪掉build資料夾和.user檔案重新編譯,編譯成功。再重新新增該庫的.c原始檔,編譯成功。
難道是Qt在之前編譯的時候把.c也一起重新編譯但是編譯無法完成才報錯的嗎?望有識之士解解惑!