首页 > 解决方案 > 如何编写无依赖的Windows程序?

问题描述

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

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

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

根据我的阅读,这可能与 MFC 或 ATL 中的一个或两个有关,并且解决方案可以将它们包含在您的版本中。是否可以将它们关闭?我不需要也不想要。(或者控制台窗口本身可能需要 MFC?)

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

标签: c++windowsvisual-studiowindows-10visual-studio-2019

解决方案


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

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

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


推荐阅读