之前跟同事討論VisualStudio C++會相依於那些dll檔案
雖然知道dll,lib是甚麼,但是對於C++所使用的基本funcion們到底是放在哪邊就不是很了解
正好看到這篇說的還不錯
相依的dll檔案會跟專案的組態設定有關係,主要分為動態靜態跟是不是debug模式
還有分不同的msvc版本
說明這些dll跟lib的功能,為什麼會搞得這麼亂七八糟跟變成這樣的原因(為了解決甚麼樣的問題)。也說明如何改變專案依賴的lib
http://blog.monkeypotion.net/gameprog/beginner/love-and-hate-between-msvc-and-crt
其實這篇文章的開頭是基於解決一些dll版本衝突所可能造成的link error
這樣的error很常見,但是看debug資訊無法解決,主因是使用的dll檔中可能相依於某個lib但是專案本身又相依於另一個衝突的lib。使得同一個function有多個實現,不知道要採用何者。
這篇文章也提供了幾個解法
1.使用不同組態編譯的dll(前提是要有辦法取得)
2.改變本身專案組態設定(因為通常dll已經無法改變)
3.在link的時候忽略程式庫(可以參考原文推文)
順道筆記一下msvc有提供偵測memory leak的工具(之前面試有被問過要怎麼處理memory leak的問題)正好同事有說有工具,估狗了一下
http://stackoverflow.com/questions/45627/how-do-you-detect-avoid-memory-leaks-in-your-unmanaged-code
沒有留言:
張貼留言