1. 程式人生 > >當你的程式在朋友的機器上顯示丟失msvcr100d.dll的時候

當你的程式在朋友的機器上顯示丟失msvcr100d.dll的時候

0. 給朋友發了個DEMO,收到提示:丟失 msvcr100d.dll

1. 一看是執行庫檔案,趕緊讓朋友下載並安裝vc++ 2010 redistribution,朋友反饋還是提示丟失這個dll檔案

2. 把我本地的這個dll拷貝到他機器裡,提示成功

3. 太奇怪了啊,這玩意就是vc++執行庫檔案啊,為啥裝了redistribution還不成呢

4. 我注意到了這個檔名的100後面帶著一個d字,讓我想起了debug~

5. 在VC裡面找設定,終於發現了:Property->C/C++->Code Generation->Runtime Library

6. 總結:

msvcr100d.dll,這個dll對應的是C++編譯器的Code Generation的Runtime Library版本的設定。預設vs2010會把他設定成Multi-threaded Debug DLL (/MDd),這時使用的就是msvcr100d.dll。正常釋出時應該是設定為Multi-threaded (/MT)或/MD,這時就會去使用vc++ 2010 redistribution裡的dll了。帶d的DLL含有living debug所需的除錯功能,但不在redistribution裡。

7. 另外,直接修改編譯模式從Debug改為Release也會修改這個配置。但別忘記了把Release下的VC++ Dictionary裡的值和Link Input重新配置哦,這些配置也同樣不會從Debug裡複製過來。