问题描述
||
我正在使用C ++ / wxWidgets创建一个小的跨平台程序。通过使用静态链接,我最终只为Windows获取了一个.exe文件。但是,它仍然需要一个小的(18 KB)mingwm10.dll
尽管我可以使用此dll分发我的应用程序,但我更希望将其“放在” .exe里面...可以吗?
谢谢
解决方法
如果使用configure脚本编译wxWidgets,请添加“ 0”。这会将
wxUSE_THREADS
设置为0,wxThread类,并且所有依赖线程的代码都不会编译。不会自动链接mingwm10.dll。
,\“包含所有项目文件的单个EXE”称为安装脚本。考虑类似InnoSetup或MSI之类的东西。
从理论上讲,可以在首次使用的代码上滚动自己的安装DLL,但是非常丑陋。它像这样:将DLL(如果可能的话)添加到EXE作为资源。在启动时,您尝试加载DLL。如果不能,请从资源中获取并放置在某个地方。而这将在非管理员用户下崩溃。自动特权升级将不起作用(它适用于安装文件)。而且您必须非常小心,在安装DLL之前不要调用任何东西。就像我说的那样,非常非常难看。