場景
VS2012編譯的動态庫,拷貝到安裝VS05的機器上,調用的過程中出錯如下:
無法啟動此程式,計算機丢失MSVCP110D.dll。嘗試重新安裝該程式以解決此問題
環境
VS2012和VS2005中項目屬性,C/C++頁籤下代碼生成>運作時庫:多線程調試DLL(MDd)預設的調試版本會指定該運作庫配置,減少dll的體積
解析
出錯原因是編譯動态庫的時候,運作時庫選擇了多線程調試DLL(MDd),程式運作時,缺少了MSVCP110D.dll運作時庫。VS05攜帶的運作時庫是msvcr80.dll,在不同的編譯器環境下,編譯出來的dll,會依賴不同版本的運作時庫,主要是VS不同的版本使用的VC庫是不一樣的
補充
M後面的T或者是D,實際上分别代表了靜态庫static,動态庫dymanic
當修改動态庫項目的運作時庫為MT或者MTd,其他項目進行引用的時候(該項目也必須設定成相同的運作時庫),這樣子編譯出來的程式,隻會依賴作業系統中的核心dll元件(kernel32.dll,
gdi32.dll,shell32.dll),拷貝到同一個版本的系統,即使沒有安裝VS也可以正常運作
本文轉自fengyuzaitu 51CTO部落格,原文連結:http://blog.51cto.com/fengyuzaitu/1730913,如需轉載請自行聯系原作者