2022年3月14日 星期一

[錯誤處理] error LNK2038: 偵測到 'RuntimeLibrary' 不符

使用Lib時,遇到了上面這個問題,把錯誤碼打上google很快就找到了解法,

在專案上點擊右鍵 -> 組態屬性 -> C/C++ -> 程式碼產生 -> 執行階段程式庫 -> 選擇 /MTd,

error就消失了,

原本設定的是多執行緒偵錯(/MDd),那這兩者的差異是什麼?

為什麼要做這個設定的修改?


後來稍微搜尋一下,

VS編譯選項MD,MDd,MT,MTd的使用和區別

VS編譯方式 MT MD MTd MDd

看完以上兩篇,

大致上就是分成Debug與Release(看後面有沒有帶一個d,代表Debug),

然後再看你是使用Lib(MT)還是Dll(MD)來去做選擇,

不同的選擇會影響執行時期程式呼叫動態函式庫還是靜態的函式庫,

呼叫靜態函式庫(Lib)會把函式庫內容一起編譯到你的程式中變成程式碼的一部份,

呼叫動態函式庫(Dll)則是在使用到函式庫內容時才去呼叫函式庫。


但看到這邊有個疑問,如果使用多個不同的Dll或Lib,甚至是混用該怎辦?

因為這次是以使用者的角度遇到這個問題,並不是開發並編譯的角色,

到這邊可見我對於這個參數的理解能力還不夠,

但開發時間緊迫,之後在搜尋看看其他資料來補足這邊的知識,

現在先把問題解決,把Lib檔正確呼叫出來比較重要。


參考資料

參考資料

沒有留言:

張貼留言

社會新鮮人如何投資?

我的觀點是,在 沒有很多 本錢 的情況下, 別寄望每個月幾千元放到股票或者最近很夯的高股息ETF就能讓你致富, 先投資自己,讓自己的本業收入提高吧。