MSVCP100.dll 丟失的問題

 最近編寫一個了一個工具要在WinPE下執行,總是出錯提示信息是“The program can't start because MSVCP100.dll is missing from your computer. Try reinstalling the program to fix this problem"。匆匆百度了一下,果然一堆灌水帖。果斷轉入Stackoverflow和Codeproject,查詢無果。去MSDN,有所發現,有人問過類似問題,一路按圖索驥,直到找到以下一篇帖子,才終於明白怎麼回事。

     原來當你使用VS創建一個可執行工程,VS一般會自動配置工程爲Debug,而你的Runtime Library會配置成/MTD或者/MDD,如果你的工程引用到了C++標準庫,MSVCPRT.lib會被自動鏈接,而這個動態鏈接庫會導入MSVCP100.dll。也就是說如果你在代碼中使用了C++標準庫,你的代碼就需要MSVCP100.dll才能夠執行,而WinPE的環境下MSVCP100.dll根本不存在,我推測MSVCP100.dll是VS自帶的用於工程調試的。所以要解決這個問題,必須把工程配置爲Release。如果工程配置爲了Release,Runtime Library必須要改成/MT否則會出現以下鏈接錯誤信息“error LNK 2001:unresolved external symbol _CrtDbgReportW"(不幸的是我也是遇到後纔想明白的。)
     所以以後遇到諸如缺少MSVCP100.dll或者MSVCP100D.DLL,MSVCR100.DLL,MSVCR100D.DLL等問題,可以考慮是否是你的工程配置爲了Debug,貌似這些dll都是VS自帶的用作調試的。Release狀態下這些dll中的信息會被寫入到最後的exe中。詳細信息請參考以下鏈接。
 
Reference:

http://msdn.microsoft.com/en-US/abx4dbyh.aspx

 

原文地址:http://www.cnblogs.com/salomon/archive/2012/05/25/2517761.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章