經(jīng)常在鏈接是報(bào)link2001錯(cuò)誤,其中一般是函數(shù)體沒有定義錯(cuò)誤。但是排除以上簡(jiǎn)單的外,還有一種如下無(wú)法解析系統(tǒng)文件中的函數(shù)定義。如下:
LINK : warning LNK4098: 默認(rèn)庫(kù)“LIBCMT”與其他庫(kù)的使用沖突;請(qǐng)使用 /NODEFAULTLIB:library
libcpmtd.lib(cerr.obj) : error LNK2001: 無(wú)法解析的外部符號(hào) __CrtDbgReportW
libcpmtd.lib(stdthrow.obj) : error LNK2001: 無(wú)法解析的外部符號(hào) __CrtDbgReportW
。。。。。。
libcpmtd.lib(_tolower.obj) : error LNK2019: 無(wú)法解析的外部符號(hào) __calloc_dbg,該符號(hào)在函數(shù) __Getctype 中被引用
像這種情況,可以推測(cè)運(yùn)用了錯(cuò)誤的運(yùn)行庫(kù)包。
在一程序中使用不同類型的運(yùn)行時(shí)庫(kù)或使用調(diào)試和非調(diào)試版本的運(yùn)行時(shí)庫(kù),則將收到此鏈接錯(cuò)誤。
例如,編譯一個(gè)文件以使用一種運(yùn)行時(shí)庫(kù),而編譯另一個(gè)文件以使用另一種運(yùn)行時(shí)庫(kù)(例如單線程運(yùn)行時(shí)庫(kù)對(duì)多線程運(yùn)行時(shí)庫(kù)),試圖鏈接它們,則將得到此警告。應(yīng)將所有源文件編譯為使用同一運(yùn)行時(shí)庫(kù)。
其實(shí)就是調(diào)正編譯器選項(xiàng)參數(shù):/MD、/MT 和 /LD
在vc8中,在“配置屬性-->C/C++-->代碼生成-->運(yùn)行時(shí)庫(kù)”中將“多線程(/MT)”統(tǒng)一改為“多線程調(diào)試(/MTd)”即可。