
Using Dev-C++ with wxWidgets
by Julian Smart, September 2002
Updated April 2003
DevPak setup with Dev-C++ 5 |
VC++ project file import with Dev-C++ 5 |
Manual setup with Dev-C++ 4 |
Further information
Dev-C++ is a free
Windows IDE (Integrated Development Environment) which brings you, for free,
some of the convenience of editing, compiling and debugging applications that many IDE users
are used to with commercial products.
This page helps you set up Dev-C++ for wxWidgets. There are instructions
for using version 4 (manual setup) and version 5 (DevPak setup).
Thanks to
Karl Penzhorn for this information.
- Download Dev-C++ (at least 4.9.8, which is a version 5 beta) from here.
- Download the wxWidgets 2.4.0 and imagelib DevPaks from here.
- Install Dev-C++ (self installing .exe).
- Install imagelib FIRST, just by double clicking on the downloaded DevPak.
- Now the same for the wxWidgets DevPak.
- There's one mistake in the templates, easy to fix. Note: this has now been fixed
in the latest DevPak for wxWidgets (2003-05-16).
- Open dev-cpp\Templates\WxWindows.template in a text editor (notepad) and go to the [Project] section.
- Copy the line Compiler=--pipe -D...etc and paste just below.
- Change pasted line to CppCompiler=--pipe -D.... etc and save the file.
- Now, load up Dev-C++. file->new->project GUI->wxWidgets. Save in a directory. Compile. Should work perfectly.
Another method is to just import the VC++ project file (.dsp) from the wxWidgets src directory,
add appropriate include and resource directories in the converted .dev project,
copy and change setup.h, then press F9.
What can I do with Dev-C++ 4? |
Installing the tools |
Creating a project
Compiling, running and debugging your program
These instructions refer to the stable Dev-C++ 4, and wxWidgets 2.3.3.
If you are using wxWidgets 2.2.x, you will need to adjust some of the flags, for
example adding -lxpm and renaming -lwxmswd to -lwx.
Also, if you use the wxWidgets DevPak, you can discount these instructions:
instead, all you have to do is open the Check For Packages/Updates under 'Tools' and download
the wxWidgets DevPak. It auto-installs. Then you simply say New/Project/GUI/wxWidgets
and you've got a basic wxWidgets app that compiles. (Note: sometimes it doesn't compile straight away
because the DevPak forgets to put the command line options for the compiler under 'C++ compiler',
only 'Compiler'. just simply go into the compiler options and copy, paste.)
Dev-C++ is basically a GUI wrapper around the
MinGW
C++ compiler. MinGW is itself a cut-down version of the
Cygwin
compiler, without the POSIX compatibility layer.
Dev-C++ allows you to create projects, edit source files, specify switches to pass
to the compiler and linker, and then compile and link your program without
having to drop down to the command line and type 'make' as you would otherwise
do with MinGW.
What about debugging? Well, Dev-C++ does come with a console-based
version of gdb, which most users would find pretty lame. Instead, you
can download Insight, which is a slightly clunky user interface built on top of
gdb. But it's better than nothing, and becoming familiar with a debugger
is essential if you're serious about writing interesting C++ applications.
- Download Dev-C++ 4 from here.
- Download
Insight
and unzip it into your Dev-C++ directory.
- There is a bug in the MinGW header files distributed with Dev-C++ 4, which affects
wxWidgets. Without the fix you will get a link error referring to the symbol EnumDAdvise__11IDataObjectPP13IEnumSTATDATA@8.
Edit the file include/objidl.h at line 663 and add a missing PURE keyword. Change it from:
STDMETHOD(EnumDAdvise)(THIS_ IEnumSTATDATA**);
to:
STDMETHOD(EnumDAdvise)(THIS_ IEnumSTATDATA**) PURE;
- Download wxDevCPPTemplate.zip
and unzip into the Dev-C++ Templates directory.
- Download and install wxWidgets for Windows, from the downloads page.
- Download and install
extra.zip,
a small collection of Unix-like utilities that you need when compiling wxWidgets.
Unzip this to a directory such c:\apps\extra. A bin directory
will be created under this.
- Set your HOME environment variable to a directory you can call home, for example c:\home.
You can set the environment variable from the Control Panel/System applet in recent versions
of Windows. Make a new file called c:\home\gdb.ini with contents similar to the following:
dir /cygdrive/c/wx2/include/wx:/cygdrive/c/wx2/include/wx/msw:/cygdrive/c/wx2/include/wx/generic:/cygdrive/c/wx2/src/common:/cygdrive/c/wx2/src/msw:/cygdrive/c/wx2/src/generic
This tells gdb (and in particular Insight) where to find source files. Change the directory
according to where wxWidgets is on your system. The notation /cygdrive/c is equivalent
to c: (gdb needs it to be this way).
- To compile wxWidgets for Dev-C++/MinGW, edit src/makeg95.env in your
wxWidgets distribution, setting MINGW32 to 1 and MINGW32VERSION to 2.95.
Edit your PATH to include the Dev-C++ bin directory and also the extras bin directory
(to pick up 'rm', 'make' and so on), set WXWIN, and then build wxWidgets. For example:
set PATH=c:\apps\Dev-C++\bin;c:\apps\extras\bin;%PATH%
set WXWIN=c:\wx2
cd c:\wx2\src\msw
make -f makefile.g95 all
This will build a debugging version of wxWidgets. Please note that you
can't currently use the 'configure' method of compilation since there
is a conflict between the version of MinGW distributed with Dev-C++, and
the MSYS package that you need to install to run configure (you get a cygwin1.dll error). Perhaps someone can
work around that limitation.
If you wish to use MSYS instead of extras.zip, please add the line OSTYPE=msys to makeg95.env,
and in src/msw/makefile.g95 replace the line:
$(COPY) $(WXDIR)/include/wx/msw/setup.h $@
with
$(COPY) $(WXDIR)/include/wx/msw/setup.h $(subst $(BACKSLASH),/,$@)
before building, to ensure that the setup.h gets copied
to the correct location. Note that you should still invoke
makefile.g95 from DOS and not from MSYS's shell, because
of the Cygwin DLL conflict.

Let's assume wxWidgets is in c:\wx2 (substitute your own install
path in the instructions below as appropriate).
Click on File|New Project..., click on the
GUI Toolkits tab, and then select wxWidgets. Click OK.
You are presented with a file dialog: create a new directory for
your project with the Create New Folder tool, type the
folder name such as myproject, navigate into the folder
and save the project as e.g. myproject.
Bring up the Project Options dialog (Project menu,
Project options command). Some of these options will
have been filled in already by the template, but some won't.
If they have been filled in, check that the directories are
correct for you.
- Add these options to the Further object files or linker options field:
-lwxmswd -lcomdlg32 -luser32 -lgdi32 -lole32 -lwsock32 -lcomctl32 -lctl3d32 -lgcc -lstdc++ -lshell32 -loleaut32 -ladvapi32 -luuid -Lc:\wx2\lib
- Add these options to the Extra compiler options field:
-fno-rtti -fno-exceptions -fno-pcc-struct-return -fstrict-aliasing -Wall -fvtable-thunks -D__WXMSW__ -D__GNUWIN32__ -DWINVER=0x400 -D__WIN95__ -DSTRICT -D__WXDEBUG__
- Add these options to the Extra include directories field:
c:\wx2\include;c:\wx2\lib\mswd
- Check these two options in the Project type box: Compile C++ project, Do not create a console.
- Click on OK.
Now click on Options|Compiler options... to bring
up the Compiler Options dialog.
- Click on the Linker tab and check Generate debugging information and Compile for Win32 (no console).
- Click on OK.

Hit the
Compile Project button to compile your program, and click
on
Continue when it has finished. With luck, all should
be well and there should be no compile or linker errors. If there
are linker errors, there is probably a typo in your paths - go back
and check the preceding steps.
Now hit the Run Project button. A window should appear.
To debug your program, stop running it in Dev-C++ and click on the Debug Project button.
If you installed Insight correctly, the Insight window will
come up as per the picture on the right, showing a rather arbitrary source file. Select
the source file you're interested in from the combobox at the bottom
left of the main window, and click on the left of the line you
wish execution to stop at: say, Show(TRUE) in MainApp::OnInit.
Click on the Run icon, and the program should run until
your breakpoint. You can now use the Step, Next, Finish, Continue
etc. to step through your program. Bring up the local variables
or watch windows to look at data in your program.
The gdb Console is useful for adding extra source directories,
for example, and other commands you wish to feed to gdb directly.
Dev-C++ comes with a gdb help file that you may wish to peruse.
Insight's online help is pretty horrible to view.