c++ - 如何编写无依赖的Windows程序?
问题描述
我用 C++ 编写了一个非常小的实用程序。我选择 C++ 有两个原因:保持 .exe 的大小尽可能小并确保零框架依赖性。我只是希望它以 100% 的兼容性尽快执行。
不幸的是,用户现在收到一条错误消息,说他们需要 MSVCP140.DLL 来运行程序。我知道这是 VC++ 可再发行包之一,但我很惊讶地发现这样一个简单的控制台程序需要一些不是 Windows 默认部分的东西。
是否可以编写无依赖的 Windows 代码?如何生成 100% Windows 原生 .exe 文件?
根据我的阅读,这可能与 MFC 或 ATL 中的一个或两个有关,并且解决方案可以将它们包含在您的版本中。是否可以将它们关闭?我不需要也不想要。(或者控制台窗口本身可能需要 MFC?)
大多数情况下,我只是感到惊讶,似乎没有可以完全独立运行的程序。如何生成一个完全独立于框架的小程序?
解决方案
为调试和发布版本切换到 C++ 编译器选项中的静态非 DLL。
https://docs.microsoft.com/en-us/cpp/build/reference/md-mt-ld-use-run-time-library?view=vs-2019
删除 /MD 并使用 /MT。这会增加可执行文件的大小,但长度可以忽略不计。
推荐阅读
- list - 访问列表从一个飞镖飘到另一个飞镖
- javascript - 按住按钮模拟滚动
- go - Go 频道发布、接收和 go 例程调度
- java - Spring Security:无法将我的 UserDetailService 自动连接到 AuthenticationProvider 以进行 BCrypt 集成
- django - DRF 嵌套序列化器。只写主键,但在读取时获取整个对象
- c# - 如何以 Xamarin 形式(MVVM)设置 Picker 的默认值?
- javascript - 这是将html转换为文本的安全方法吗
- azure - Azure python SDK - 列出服务主体权限
- python - 在python中查找和替换xml中的值
- vue.js - 每次请求后api不刷新