之前通过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
过程有点繁杂...能总比不能强点...