Dev-Cpp vs Visual Studio 2008

Hopefully this article won't get too polemic. I made some decisions about the future of some of my projects and most important of the art of software developing I want to continue.

I've worked for since the start of 1999 with the Dev-Cpp IDE which uses the MinGW compiler. The reason for this is that I didn't want to spend so much money on Visual Studio to get a C++ compiler. This was OK for me that time. Soon I noticed that it's not so easy to get everything compiled with the MinGW compiler. This compiler accepts only strict ANSII C++ so it was quite difficult to use some libraries available on the www. To get things done with MinGW compiler you had to download either a MinGW version of libraries or create them yourself. This was also OK for since most libs I was using were available for MinGW too. Problems began when I decided to develop on DirectX. I installed the DirectX SDK and got even on the simplest example application a bunch full of errors. So I put my ass down to get it work with MinGW. It was an nearly endless task and I won't go deeper into it. You can read the whole article here. When I got it finished I wanted to use some sound in my application. I decided to use the ogg vorbis format since I think it's still the greatest alternative to mp3. Again nor libs for MinGW and again some nights working on a DevPak. Community contacted me on my game site G-Productions wanting me to get the audiere audio library working with MinGW, others wanted the NVidia CG Toolkit to use with MinGW. At one point it was fun creating all this DevPaks. You can learn so much about compiler differences when working on this.

Again it was great fun the whole time, and it was OK for me having to spend some extra time on creating DevPaks first, to use them. Another great thing on the MinGW compiler was that code execution times are great compared to the code Visual C++ 6.0 created. You can read more about execution times in my previous article here. Now things changed since the .NET framework and I made some tests with the Microsoft Visual C++ Express Edition. The only thing I can say is WOW. If we compare the code execution times Microsoft made a big step forward. I had the chance to also test the Microsoft Visual C++ 9.0 pro edition and I'm thrilled. As a game programmer one of the most important things is (or should be) the code execution times. MS VC++ 9.0 rocks.

At some point I'm also glad not having to create a DevPak any more to develop something. Things get more difficult with the latest DirectX releases and I'm not sure if a conversion to a DevPak would be possible with the final release of DirectX 10. MS changed so many things in there.

What about the XNA framework? Maybe managed code is the future... Maybe the use of the XNA framework makes game development a very easy task but I will still use C++. Writing your own loaders, your own functions using the DX classes allows you more flexibility and I'm one of those old-school programmers who likes to know what his code does ;). No doubt, using the XNA framework saves you a lot of time and headache but you should decide for yourself what’s the best for your game. 

So what did you learn reading all this ideas and thoughts? I can highly recommend using the new Visual Studio. The performance on execution time is incredible. If you still use Dev-Cpp you most probably won't be able to use DirectX 10 but don't nail me on that, it's only speculation. If you come to the point where you want to use DirectX 10 you most probably won't have an alternative to MS VC++. Hey don't come with the "Dev-Cpp is free" paroles. You can get MS VC++ 9.0 for free (the Express Edition) ;)

Comments (11) -

Neil Roy
Neil Roy
10/11/2009 7:54:21 AM #

Thanks for your comments.  I too have been a big fan of Dev-C++, but I recently installed the new Visual C++ express editions (and C#) and have been impressed.  There are some nice tutorials online about using these and the Debug mode for VC is very nice.  I think it may be time to kiss Dev-C++ goodbye.  It's too bad really, Dev-C++ has been a nice compiler for a long time but time to move up and Microsoft has done some nice things with VC, plus it is now free as well.  Also, if you ever want to get professional with your programming you pretty much have to learn your way around Visual Studio sooner or later.

Dimi
Dimi
10/19/2009 7:21:00 PM #

You got the point Smile

Bobby
Bobby
10/20/2009 2:51:51 PM #

Same here, but in my country Dev-cpp still use with many programmer like me and maybe soon or later MSVC will be the choice (dunno... time goes slow here :LOL).

Ivan Vučica
Ivan Vučica
7/31/2010 7:04:58 PM #

Dev-C++ as an IDE is quite poor, and although at one point (2005) I was a huge fan, it quickly became obvious it is abandonware. I don't think it's fair comparing Dev-C++ to Visual C++, when there's so much better IDEs such as Code::Blocks, or lately a contender CodeLite, just around the corner. Visual C++ 2010 Express seems nicer, somewhat more palatable than Visual C++ 2008 (both Express and Professional), but I still feel some kind of repulsion towards it.

On the other hand, MinGW's GCC has flaws, yet it is still a superb compiler on its own. Microsoft has numerous quirks of its own, it has many strange decisions, and I certainly don't want my projects to depend on their good will in providing Express editions of their compiler. If I have to provide Windows versions of my products, I will keep providing them using MinGW, and I'll maintain Code::Blocks projects as build systems.

Other people are welcome to do as they please Smile

Dimi
Dimi
8/2/2010 5:49:06 PM #

Good points, but I think it's fair comparing both since on the official forums they claim(ed) dev-cpp to be an alternative to Visual Studio products. I still use Dev-Cpp but since I got my hands on a VS 2010 Pro edition I try to stay with one IDE. MinGW compiler is great. There are so many things I learned with this compiler (writing better and standard code) but the reason I wrote this article recommending the express editions is that I lost so much time when working on a project without the apropriate libs. It took me more time developing a devpak then completing the project I should work on. With the Visual Studio 6.0 there was no free edition (student edition had a nag screen or messagebox I think) so why trying to update let's say the DirectX SDK July 2010 to work with Dev-Cpp and Mingw instead of directly using a free Express edition of C++?

I also tried Code:blocks but it was very buggy that time so I didn't spend too much time on it. The CodeLite is something I never heard of so I will check it out now ;)

Ivan Vučica
Ivan Vučica
8/3/2010 1:22:04 PM #

It may have been fair a few years ago since there was no free alternative to VS, so people had no choice. However,

since Dev-C++ is abandonware,
since even its syntax-aware autoindentation doesn't work properly,
since its autocomplete is a joke,
since its project management is absurd (it doesn't support multiple files in different directories but with same name),
since it either requires full rebuild or abysmally slow header dependency scanning (if I remember correctly),
since it constantly throws unhandled exceptions from Delphi (where Terminate and Continue is offered)
most importantly, since all of the above are bugs that should be fixed within a few months, so they could be handled, but now they never will be...

Well, that's why I think Dev-C++ is something completely different. It's a toy IDE. It's not in the VS league, it's in Turbo C++ league.

Code::Blocks is far from buggy; for a long time they had a stable version 8.02, until recently they released a new stable version. Even the nightly builds were far from buggy, and I had very little problems and very small annoyances. I cannot comment on its state today, since for the last few months I use Xcode on Mac; but from what I remember comparing Dev-C++ and Code::Blocks, and from what I saw in CodeLite recently, and from what I remember in VC++2008, I think Code::Blocks is the most pleasant IDE for developing small-to-mid-sized projects.

Dimi
Dimi
8/3/2010 3:43:21 PM #

Man from what you post I think you don't like Dev-Cpp at all ;) Yep I totaly agree with the above but also thanks for the link to CodeLite. It looks very interesting.
By the way what compiler do you use for Mac? I have absolutely no experience with Mac development but I think this is gonna be interesting for an upcoming project which is also targeted for Mac.

Ivan Vučica
Ivan Vučica
8/3/2010 5:42:52 PM #

Precisely -- I used to like it, because I developed small-sized projects, and thought it would grow better Smile

I use Apple's SDK; that is, Xcode3 as the IDE, and GCC and Clang as compilers. Xcode comes on the DVD that ships with Mac, and is also available from http://developer.apple.com/ . If you intend to write multiplatform games, however, I suggest you use SDL for input and windowing, and OpenGL for rendering. If you intend to implement some Mac-specific features (or if you don't like SDL) then you'll need to learn some Objective-C too. If you intend to write a Mac application, well, then you can't reasonably escape the clutches of Objective-C.

I love Objective-C; to me, Objective-C and Cocoa seem to be all that C++ and libstdc++ should have been Smile

Dimi
Dimi
8/3/2010 6:12:41 PM #

Thanks for that dude. I try to get my hands on a mac vm to start getting more into mac dev but no chance. It's not graphic app Frown but a database solution for a customer who also uses mac clients. I will go with the link above which seems a good starting point. Thank you very much

Ivan Vučica
Ivan Vučica
8/3/2010 6:57:34 PM #

If so, I don't think you'll have problem developing on Linux and then just compiling on Mac. Just be careful:
* don't make presumptions about CPU architecture (you might need to support x86_64 and PowerPC when dealing with Mac),
* don't make presumptions on how to write Makefiles (you might need to pass extra compiler/linker options),
* don't mix "user-includes.h" with <system-includes.h>
* don't forget to check whether the lib you use has any problems on a Mac
* finally, Mac loves the concept of a .framework -- dylib and headers thrown together, and all headers are included using the form of <library/header.h>; SDL already has it nicely done: <SDL/SDL.h>. I mention this because some of the libs you may use might ship on Mac in form of a .framework

If your commenting system permits you to see my email address, feel free to contact me there

Dimi
Dimi
8/3/2010 8:39:07 PM #

Thanks for the tips and thanks for the offer. I most probably will contact you if I'll face problems. It's time now to go cross-platform

Add comment

  Country flag

biuquote
  • Comment
  • Preview
Loading