我正在使用C ++ / wxWidgets创建一个小型跨平台程序。通过使用静态链接,我设法最终只获得一个Windows的.exe文件。但是它仍然需要一个小的(18 KB)mingwm10.dll
虽然我可以用这个dll分发我的应用程序,但我更喜欢把它放在.exe内部......是否有可能?
由于
答案 0 :(得分:1)
如果使用configure脚本编译wxWidgets,请添加--disable-threads
。这会将wxUSE_THREADS
设置为0,wxThread类,并且不会编译依赖于线程的所有代码。自动mingwm10.dll将不会被链接。
答案 1 :(得分:0)
“包含所有项目文件的单个EXE”称为安装脚本。考虑像InnoSetup或MSI这样的东西。
在第一次使用代码上滚动自己的安装DLL在理论上是可行的,但非常难看。它是这样的:你把DLL(如果可能的话,压缩)作为资源添加到EXE。在启动时,您尝试加载DLL;如果你不能,你从资源中拿走它并放在某个地方。这将打破非管理员用户。并且自动权限提升将不起作用(它适用于安装文件)。在安装之前,你必须非常小心不要在DLL中调用任何东西。就像我说的那样,非常非常难看。