wxWidgets Logo
 
 

Docs

 
  Tutorials
FAQ
Licence
 
 
Please notice that the tutorial below is quite old and that while it is quite possible to use wxWidgets with both Dev-C++ versions 4 and 5 by following these instructions, it might interest the reader to know that there now exists an enhanced version of Dev-C++ including wxWidgets support called wxDev-C++. This is an actively supported, more updated release of Dev-C++ version 5, having an integrated form designer, with wxWidgets libraries, program templates and examples already present within the distribution.

Dev-C++ Setup Guide

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++ in action 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).

DevPak setup using Dev-C++ 5

Thanks to Karl Penzhorn for this information.

  1. Download Dev-C++ (at least 4.9.8, which is a version 5 beta) from here.
  2. Download the wxWidgets 2.4.0 and imagelib DevPaks from here.
  3. Install Dev-C++ (self installing .exe).
  4. Install imagelib FIRST, just by double clicking on the downloaded DevPak.
  5. Now the same for the wxWidgets DevPak.
  6. 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.
  7. Now, load up Dev-C++. file->new->project GUI->wxWidgets. Save in a directory. Compile. Should work perfectly.

VC++ project file import with Dev-C++ 5

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.

Manual setup using Dev-C++ 4

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.)

What can I do with Dev-C++?

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.

Installing the tools

  1. Download Dev-C++ 4 from here.

  2. Download Insight and unzip it into your Dev-C++ directory.

  3. 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;
    

  4. Download wxDevCPPTemplate.zip and unzip into the Dev-C++ Templates directory.

  5. Download and install wxWidgets for Windows, from the downloads page.

  6. 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.

  7. 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).

  8. 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.

Creating a project in Dev-C++

Project Options 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.


  1. 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
    

  2. 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__
    

  3. Add these options to the Extra include directories field:
    c:\wx2\include;c:\wx2\lib\mswd
    

  4. Check these two options in the Project type box: Compile C++ project, Do not create a console.

  5. Click on OK.

Now click on Options|Compiler options... to bring up the Compiler Options dialog.

  1. Click on the Linker tab and check Generate debugging information and Compile for Win32 (no console).

  2. Click on OK.

Compiling, running and debugging your program

Insight 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.

Further information

 
 

Quick Links

 
  Documentation
Hello, world!
Stable manual
Latest manual
Change log

Community

Mailing Lists
wxBlog
wxCode (Add-ons)
wxForum
wxWiki

Development

Sources
wxTrac
New ticket
Roadmap
 
 
 
 

wxSolutions

 
   
 
 
 

wxBook

 
 

Buy it From:
Amazon.com
Amazon.co.uk

 
 

Site design and update scripts by Kevin Ollivier, with special thanks to Brad Anderson for his improvements to the sidebar, intro table and navbar designs, Bryan Petty for the new wxWidgets blocks graphics and logo text, and to the wxWidgets community for all their helpful suggestions, comments and testing!