默認情況下,Visual Studio編譯項目以使用Visual Threat運行時中的多線程DLL。我想用/ MT而不是/ MD來編譯我的程序。當然,大多數系統已經安裝了這個系統,並且它也可以重新分配。編譯沒有多線程DLL的程序(Visual C++ 2010)
當我改變/ MD到/ MT,我得到一個錯誤:
MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _free already defined in LIBCMT.lib(free.obj)
而且四五個類似的錯誤。 要嘗試解決此問題,我從默認庫中刪除了LIBCMT.LIB。
然後我得到的錯誤:
libcpmt.lib(_tolower.obj) : error LNK2019: unresolved external symbol __calloc_crt referenced in function __Getctype
從默認列表中刪除MSVCRTD.LIB導致類似的錯誤? 應該注意的是: - 這是一個OpenGL項目,使用glfw庫。 - 我使用lonesock的SOIL圖像庫進行紋理加載。
什麼是您的構建設置?因爲MSVCRTD是MSVCRT的調試版本。 – Bart 2012-02-05 11:37:53
可能的重複[解決LNK4098:defaultlib'MSVCRT'衝突](http://stackoverflow.com/questions/3007312/resolving-lnk4098-defaultlib-msvcrt-conflicts-with) – 2012-02-05 12:32:22