如何编写无依赖的Windows程序?

How to write dependency-free Windows program?

本文关键字:Windows 程序 依赖 何编写      更新时间:2023-10-16

我用C++写了一个非常小的实用程序。我选择C++有两个原因:保持.exe尽可能小的大小,并确保零框架依赖。我只是希望它以 100% 的兼容性尽可能快地执行。

不幸的是,用户现在收到一个错误,说他们需要MSVCP140.DLL才能运行该程序。我知道这是VC++可再发行组件包之一,但是我很惊讶地发现,如此简单的控制台程序需要一些不是Windows默认部分的东西。

是否可以编写无依赖的Windows代码?如何生成 100% Windows 本机.exe文件?

从我所读到的内容来看,这可能与 MFC 或 ATL 中的一个或两个有关,解决方案可以是将它们包含在您的版本中。是否可以关闭它们?我也不需要也不想要。(或者控制台窗口本身的引擎盖下可能需要 MFC?

大多数情况下,我只是感到惊讶,似乎没有可以完全独立运行的程序。如何生成一个完全独立于框架的小程序?

在调试和发布版本的C++编译器选项中切换到静态非 DLL。

https://learn.microsoft.com/en-us/cpp/build/reference/md-mt-ld-use-run-time-library?view=vs-2019

删除/MD 并使用/MT。这会增加可执行文件的大小,但长度可以忽略不计。