在一個非常古老的代碼庫中,我們爲Visual C++項目設置提供了一些構建設置,這些設置令人困惑,看起來並不必要。忽略crt庫的特定庫?
我們的C++項目是使用visual studio(目前使用vs 2010)構建的,並且在鏈接器選項中爲「忽略特定庫」鏈接器設置指定了一些庫。其中一些庫是:msvcirt.lib和msvcrtd.lib。
所以對於這個問題: 我無法弄清楚爲什麼忽略這些特定的圖書館是必要的生活?
我最好的猜測是: 也許這是必要早在視覺工作室的早期? ...出於某種奇怪的原因,只有投入其中的人才知道。
默認情況下,使用VS 2010製作C/C++項目(即.vcxproj),這些庫不會被明確忽略。因此,我99%確信此鏈接器設置在99%的時間內不是必需的。有沒有人同意我的看法?
當我使用dependency walker來檢查我構建的任何舊的DLL時,我可以看到如果我在ADVAPI32.dll中鏈接它是msvcrt.dll的依賴項。但這應該不是我的擔心......
避免在嘗試鏈接使用錯誤設置(例如/ MT vs/MD)編譯的.obj或.lib文件時生成的鏈接程序錯誤是常見的攻擊。真正的解決方法是正確編譯代碼。 –