Guidance Forums / wxWidgets (wxWindows) in C++ / Porting & How do you make your output file smaller?

Search 搜索
Home Home

Forum List • Thread List • Refresh • New Topic • Search • Previous • Next First 1 Last
Message1. Porting & How do you make your output file smaller?
Posted by: 2004-02-13 09:21:23
I have 2 questions:

1. I've been writing a program for my school on my computer, which runs WinXP.  When I put my wxWindows program on my school's computers, which run Win95, I get an error about a missing MSVCRT.dll file.  Is there any way I can fix this problem without manually supplying the DLL?

2. I noticed that my wxWindows program was a whole 2MB, even though I only had about 200 or so lines in it.  Is there anyway I can make the output file smaller?  (In case this is solved by editing the linker options, I included my linker options below)

[C++ Compiler]
-DWINVER=0x0400 -D__WIN95__ -D__GNUWIN32__ -D__WIN32__ -DHAVE_W32API_H  -D__WXMSW__ -D__WINDOWS__ -Wall -fno-pcc-struct-return -O2 -Os -fno-rtti -fno-exceptions

-Wl,--subsystem,windows -mwindows -lwxmsw -lstdc++ -lgcc -lodbc32 -lwsock32 -lwinspool -lwinmm -lshell32 -lcomctl32 -lctl3d32 -ladvapi32 -lopengl32 -lglu32 -lole32 -loleaut32 -luuid 

#include <wx/window.h>
#include <wx/image.h>
#include <wx/splash.h>
#include <wx/bitmap.h>
#include <wx/filedlg.h>
#include <wx/msgdlg.h>
#include <wx/event.h>
#include <wx/textfile.h>
#include <wx/dcclient.h>
#include <wx/panel.h>

Thanks in advance =)
Message2. Re: Porting & How do you make your output file smaller?
Posted by: guidance 2004-02-13 17:59:38
Message3. Re: Porting & How do you make your output file smaller?
Posted by: upCASE 2004-02-13 22:31:59
1. I guess you'll be out of luck if you don't want to supply this dll. Problem is that mingw gcc links to this DLL, because it uses the standard C runtime MS provided with it. Win98 and higher versions do have this DLL by standard, for Win95 you either need to supply it or get an official MS update. Simply install the DLL in WINDIRsystem and you're done with.

2. Yes, compiled with gcc wxWindows apps get pretty big compared to apps compiled with MS VC++. The reason for that is that gcc (or g++) has to provide it's own C++ runtime and link it in. C++ produces some overhead. With upcoming versions this may change. gcc 3.3.1 produces smaller apps.
You have a few options.
- Strip the app. Do so be either using strip exename.exe on the command line or using the -s option in your linker settings.
- Use upx. It's a free exe packer that reduces size normaly about 30%-35%.
- Compile wxWindows as a DLL. That way you'll have to provide the DLL with your app, but the app itself will be small.

If it was hard to write, it should be hard to read!- Do. Or do not. There is no try!
Message4. Thanks
Posted by: 2004-02-14 01:04:20
Thanks Guidance and upCASE.

Guidancem, I copied your compiler and linker settings, and that reduced the file size from 2.04MB to 0.98MB!  And I took your advice, upCASE, with using the exe packer (as well as the strip idea), and it reduced the file from 0.98MB to 356KB!  I never thought an exe packer compressed the file that much.
Forum List • Thread List • Refresh • New Topic • Search • Previous • Next First 1 Last
© Fri 2024-6-21  Guidance Laboratory Inc. Hits:0