c++:如何在没有mingwm10.dll的情况下发布单个可执行文件

C++: How to ship a single executable without mingwm10.dll

本文关键字:dll 情况下 可执行文件 布单个 mingwm10 c++      更新时间:2023-10-16

我正在用c++/wxWidgets创建一个小的跨平台程序。通过使用静态链接,我最终只获得了一个Windows的。exe文件。但是它仍然需要一个很小的(18 KB)的mingwm10.dll

虽然我可以用这个dll分发我的应用程序,但我更愿意让它"在".exe中…这可能吗?

谢谢

如果使用配置脚本编译wxWidgets,则需要添加--disable-threads。这将设置wxUSE_THREADS为0,wxThread类和所有依赖于线程的代码将不会被编译。自动不链接mingwm10.dll

"包含所有项目文件的单个EXE"称为设置脚本。考虑类似InnoSetup或MSI的程序。

在第一次使用代码时滚动自己的安装DLL理论上是可能的,但是非常难看。它是这样的:您将DLL(如果可能的话,已压缩)作为资源添加到EXE中。在启动时,您尝试加载DLL;如果你不能,你就把它从资源中拿走,放在某个地方。这将打破非管理员用户。而且自动特权升级不起作用(它适用于安装文件)。在安装DLL之前,您必须非常小心不要调用DLL中的任何内容。就像我说的,非常非常丑。

相关文章: