場景shell
VS2012編譯的動態庫,拷貝到安裝VS05的機器上,調用的過程當中出錯以下:多線程
沒法啓動此程序,計算機丟失MSVCP110D.dll。嘗試從新安裝該程序以解決此問題ide
環境spa
VS2012和VS2005中項目屬性,C/C++選項卡下代碼生成>運行時庫:多線程調試DLL(MDd)默認的調試版本會指定該運行庫配置,減小dll的體積操作系統
解析線程
出錯緣由是編譯動態庫的時候,運行時庫選擇了多線程調試DLL(MDd),程序運行時,缺乏了MSVCP110D.dll運行時庫。VS05攜帶的運行時庫是msvcr80.dll,在不一樣的編譯器環境下,編譯出來的dll,會依賴不一樣版本的運行時庫,主要是VS不一樣的版本使用的VC庫是不同的調試
補充編譯器
M後面的T或者是D,實際上分別表明了靜態庫static,動態庫dymanicit
當修改動態庫項目的運行時庫爲MT或者MTd,其餘項目進行引用的時候(該項目也必須設置成相同的運行時庫),這樣子編譯出來的程序,只會依賴操做系統中的核心dll組件(kernel32.dll,編譯
gdi32.dll,shell32.dll),拷貝到同一個版本的系統,即便沒有安裝VS也能夠正常運行