[轉]VS2015編譯的程序在其他機器上缺少msvcp120.dll


http://www.lai18.com/content/1159618.html

 

1、

今天分享一個自己在開發過程中遇到的困難。

用VS2015開發了一個windows客戶端(win32項目),在自己的機器上運行很流暢。當你得意的把releas版本進行打包,並進行發布后,問題來了?很多人反饋運行時缺少msvcp140.dll,甚至有人在XP系統上完全不能用。

那么首先看看是如何解決的: 

在工程上打開屬性,選擇C/C++,選擇代碼生成,把運行庫改為“多線程(/MT)”。重新編譯即可。 



但是對於兼容XP的問題呢?同樣是在工程的屬性里,選擇常規,平台工具集中選擇“Visual Studio 2015-Windows XP(v140_xp)” 



你以為這樣就大功告成了嗎,大錯特錯。上面的方法是解決缺少msvcp140.dll的方法,但是我遇到的問題是缺少msvcp120.dll。

到底這是個什么鬼? 

其實說白了就是C++的動態鏈接問題。 

msvcp120.dll是vs2010編譯的程序默認的庫文件。msvcp120.dll可以解決某些大型游戲、程序由於vs2010編譯系統中缺失此dll的問題。vs2010編寫的程序運行所需dll。 

如果您的系統提示“找不到msvcp120.dll ”或“msvcp120.dll 缺失” 或者“msvcp120.dll 錯誤”的問題,下載本文件復制到*/Windows/SYSTEM32下,即可解決問題。

那這么說msvcp140.dll就是vs2015對應的庫文件了。

這時候關鍵問題來了?我用的是vs2015,而且已經改為了多線程(/MT),但是為什么會顯示缺少msvcp120.dll呢?

哎,怪自己孤陋寡聞,被這個問題折磨了一天。

這時候常規的做法是用depends來看一下.exe的依賴項。 

看了很多遍都沒發現問題。

最后靈機一定,是不是使用的第三方庫(別人的dll)出了問題呢?這里用到了一個gloox.dll,迅速用depends看下gloox.dll,果然存在對msvcp120.dll的依賴。

怎么辦呢?找gloox的源碼吧,自己重新編譯一下。

但是在編譯gloox的時候,出錯了。。。。。。

未完待續。。。。。。

2、

3、

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM