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里復制過來。