之前通過VS2015編譯的程序在一些電腦上能跑,一些不能跑。試了好多台,能跑的應該是裝了vs2015運行庫的(不是程序),不能跑的都是缺失dll文件。網上有教程說把配置屬性->C/C++->代碼生成中的運行庫設置為MT,即靜態庫。然而這樣可能連編譯都通不過了,報這樣的錯:
必須選擇動態庫。
只能把需要用到的dll都扔到一個文件夾里了。用dependcy.exe可以分析dll的依賴關系,經分析發現最主要的就是缺失MSVCP140.dll,但其依賴的的dll才是最讓人頭疼的。
可以看到他的依賴關系挺多的:
其實沒看起來這么多,kernel32.dll肯定是個windows電腦就有的,就不管他了,他的依賴項也不用管了。
dependcy只分析出依賴關系,不能給出我依賴的文件地址...也許是因為其中一些文件隱藏了,開始我照着文件名去網上一個一個當下來,然而拿到另一台機子上跑失敗了...應該是網上的dll不太靠譜或者不匹配吧...
最終,就是用everything從自己的電腦上一個一個找出來存在VS文件夾和.NET文件夾中的相同名字的dll,嗯,就這樣成功了。
打包好的MSVCP140.dll及其依賴dll壓縮文件地址:http://files.cnblogs.com/files/jwmeng/msvcp140.dll.zip
過程有點繁雜...能總比不能強點...