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

时间:2011-04-14 15:24:00

标签: c++ wxwidgets static-libraries

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

虽然我可以用这个dll分发我的应用程序,但我更喜欢把它放在.exe内部......是否有可能?

由于

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

“包含所有项目文件的单个EXE”称为安装脚本。考虑像InnoSetup或MSI这样的东西。

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