在VS中编译程序而不需要外部运行时dll

时间:2016-06-21 15:00:20

标签: c++ windows visual-studio dll

这有点是对this question (MSVCP140.dll missing)的补充。

我正在尝试为Windows机器编译程序。这里需要注意的是我没有在其上安装软件的权限,但我可以运行可执行文件。

每当我在有问题的Windows机器上运行它时,我都会遇到MSVCP140.dll问题。我跟着the solution of the question I have linked(这是静态链接)并且由于一些非常奇怪的原因我仍然得到错误(尽管我知道这使得程序能够在同事计算机上运行时遇到相同的错误)。

我能做些什么会使程序(缺乏更好的条款)完全可移植?我需要在VS中更改哪些设置,以便将库完全编译为可执行文件?

我将进一步强调我已经看到使用/ MT选项进行编译时使用静态链接的解决方案的事实,我仍然会丢失.dll问题。

我尝试在我的可执行文件旁边复制MSVCP140.dll,它确实解决了这个问题,但是还有另一个丢失的.dll,我不能逐步添加.dll直到程序开始工作。如果这是唯一的解决方案,我很乐意将所有.dll捆绑到程序中,但我想知道哪些是必需的,所以我不必复制整个system32文件夹。

1 个答案:

答案 0 :(得分:2)

继续使用dependency walker找出你需要的dll,以及为什么需要它们。这可以启发,并通过使用替代方案导致切断许多依赖关系的路径。如果您确定在用户运行时没有导入某些功能(例如,您只是为了调试目的而导入它们),那么您可以选择delay load它们。