这是对this question (MSVCP140.dll missing)的补充。在VS中编译程序,不需要任何外部运行时DLL
我想编译一个Windows机器的程序。这里需要注意的是我没有在其上安装软件的权限,但我可以运行可执行文件。
每次我在有问题的Windows机器上运行它时,都会出现MSVCP140.dll问题。我跟着the solution of the question I have linked(这是静态链接),对于一些非常奇怪的原因,我仍然得到错误(即使我知道这使得程序在得到相同错误时在同事计算机上运行)。
还有什么我可以做的,这将使程序(缺乏更好的条款)完全可移植?我需要在VS中更改任何更多设置,以便将库完全编译为可执行文件?
我将进一步强调事实我已经看到使用静态链接使用/ MT选项进行编译的解决方案,我仍然缺少.dll问题。
我试图复制MSVCP140.dll旁边我的可执行文件,它确实解决了这个问题,但还有另一个缺少.dll,我不能递增地添加.dlls,直到程序开始工作。如果这是唯一的解决方案,我很高兴将所有的.dll文件捆绑在一起,但是我想知道哪些是需要的,所以我不必在绝望的情况下复制整个system32文件夹。
首先,你必须知道你的应用程序,然后你应该知道它的依赖关系,一个用LoadLibrary()加载的缺失依赖可能很难被发现,或者长时间被忽视。这就是说你可以用一个名为DependencyWalker的小工具来检查依赖关系。另外请注意,如果你静态链接所有的C++ RT DLL,那么它应该在每一台机器上都能正常工作,所以应该有其他的东西在那里丢失...... –
@AdrianoRepetti相信我,我很困惑,为什么静态链接是不工作。 – ZoSal
您是否对依赖于MSVCP140的任何其他(部署)DLL有依赖性?您应该使用Dependency Walker探索您的依赖关系树以获得更好的概览 –