今天使用vs2008編譯工程無錯誤,鏈接過程,出現很多這樣的錯誤:
error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::~basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(void)" (??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ) already defined in msvcprtd.lib(MSVCP90D.dll)
這個錯誤,提示的意思應該是標准庫的類已經被定義過了,但找了半天也沒發現哪裡重復定義,後來發現,原來我的工程使用的是lib庫,而vs2008的工程設置的代碼生成方式是dll庫:
在property->configure->c/c++->code generation->runtime library
將Multi-threaded Debug DLL (/MDd)
改為Multi-threaded Debug (/MTd)