Jump to content

Visual Studio

Josh

2,796 views

I experienced some problems this week when I tried to create an executable with Visual Studio 2008 for deployment. On Windows 7 test machines I would get this error:

"The application has failed to start because its side-by-side configuration is incorrect."

 

I finally tracked the solution down to a Visual Studio project setting. In Project Settings > Configuration Properties > C/C++ > Code Generation there is a property called "Runtime Library". By default it is set to rely on external DLLs. Change these values to non-DLL settings (like MT or MTd) and they will include the runtime library in the executable. This makes for bigger executables, but they will run everywhere.

blogentry-1-0-09227600-1348794983_thumb.jpg

 

Having experienced this problem with Visual Studio 2010, I guessed this was the same issue. I uninstalled the Visual C++ 2010 Redistributable Package from my Windows XP machine, then created a simple test program on another Windows 7 machine. First I made sure I could create the problem, by using the default runtime library. Ever seen this error?:

blogentry-1-0-22035800-1348795290_thumb.jpg

 

I've seen this issue come up before on this forum. Now you know how to solve it and build Debug or Release executables that will run everywhere, with Visual Studio 2008 and 2010. Here is my test application from Visual Studio 2010, "testapp.MDd.bat" will only run if you have the 2010 Redistributable Package installed. "testapp.MTd.bat" will run everywhere:

testapp.zip

 

Since we no longer have problems creating executables for Windows XP with Visual Studio 2010, I see no reason not to move our project on to a newer version. Visual Studio 2012 currently cannot make Windows XP executables, but Microsoft claims this will be supported soon. However, even if deployment to Windows XP is supported, Visual Studio 2012 itself will never run on Windows XP. Switching to Visual Studio 2012 would mean you cannot program Leadwerks with C++ on Windows XP.

 

What do you think? Should we make the move to 2012, 2010, or stick with 2008?



24 Comments


Recommended Comments

Another tip: If you experience linker errors, add this to the Linker command line, and add "libcmtd.lib" to the linker input libraries:

/NODEFAULTLIB:msvcrtd.lib /NODEFAULTLIB:libcmt.lib

Share this comment


Link to comment

Non of the devs I speak to are interested in VS2012 for a variety of technical reasons. XP support is vital for us though.

Share this comment


Link to comment
What do you think? Should we make the move to 2012, 2010, or stick with 2008?

We should move to CodeBlocks and MinGW.

It should be possible to use Leadwerks 3 like a complete game development environment on all platforms, and Visual Studio doesn't work on Linux or Mac. CodeBlocks works on all platforms and gives the same pipeline under each OS.

Share this comment


Link to comment

I doupt that i will be a source developer ...

but 2010 with the option for win7/8 (its 2013 then, right).

 

WinXP is going down just like Win2000 (both good but not supported).

 

Keeping up with the tech is a good thing - if that means that all the helping hands are leading you in the wonderfull world of stupidity however ?!

 

... and you just cant do that with some of the nice video/gui/sql etc. libs.

... which means you have to rebuild there libs for/with 2010.

Share this comment


Link to comment

I would suggest preparing Leadwerks for the future, thus making a high end renderer for it. If the Android and IOS tablets and phones are getting so powerful as to open up a new market we are going to need it to be a part of that market.

Share this comment


Link to comment

That however most likely is because they write dx11+ engines ... even if they would want to support windowsXP - they cant. Actually winXP does not support there games afaik. :P

Share this comment


Link to comment

On another note: Leadwerks has allways been about high quality rendering. Something like CryTech was doing with the Cryeninge. You can keep supporting older platforms but at some point you need to let go. A strategic decission, but taking Leadwerks reputation in to consideration, I would go for high end platforms and focussing on newer technology.

Share this comment


Link to comment

If you want high-end graphics, Windows XP is the best option. OpenGL rendering is about 15% faster in XP.

Share this comment


Link to comment

This seems to render out in a debate about XP or Win7. No matter if you thinks that XP is 10%, 15% or 20% faster than Win7 (which it is not) there is just baloney even suggesting to keep development for XP or development with VS2008. They will not be supported by Microsoft in the near future. That's it! Fewer and fewer users will even have XP or VS2008 as its not sold of supported. Even talking about that alternative for a "modern futurist game engine" is really ridiculous. Going with Win7 and VS2010 is kind of okay at this moment as Win8 + VS2012 is so fresh, But certainly they are the future whether you like it or not. But Win7 is VS2010 is OK. That's my thought about this.

Share this comment


Link to comment

Actually I think that Win7 64-bit is faster than Win7 32-bit, especially if you have 16GB RAM. It will affect many things when you have enough RAM and 64-bit, and considering that 64-bit gives more CPU registers (and other CPU benefits) will add even more to the speed boost over 32-bit. It might be around 3% slower than XP, or even faster than XP, especially if you use the Windows 2000 theme and disable all services smile.png

Share this comment


Link to comment

@Roland, the debate is XP development support (2010) vs. 2012 with theoretical XP deployment that doesn't exist yet.

 

(But in any case, XP is better for high-end graphics with OpenGL.)

Share this comment


Link to comment

Well, iam talking business here and thats why i exclude win8 - you do not go for an additional low end renderer and exclude half of the current potential user base. In 2013, windows 8 might be half through the door - atm its not.

 

Wargames sell harware for a market where the money was in 1997. Computergames are grown up, there is not just the average 20+ male gamer anymore, its family entertainment.

Share this comment


Link to comment

@Roland, the debate is XP development support (2010) vs. 2012 with theoretical XP deployment that doesn't exist yet.

 

(But in any case, XP is better for high-end graphics with OpenGL.)

Aha... okay. Well 2010 is the way to go then. I will not debate if XP is better or not as you are the expert on that. I believe you. But in any case Win7 is the only choice we got for the future.

Share this comment


Link to comment
I will not debate if XP is better or not as you are the expert on that. I believe you.

What? Are you sure this is the Internet?! laugh.png

Share this comment


Link to comment

Windows 8 sucks, doesnt run well at all on my system, and Windows 8 was aimed mostly at ARM and Bulldozer supposedly..( I have an FX-8150)

 

I tested both the dev preview and the release candidate ..both of them were pretty bad..

 

Side note: Dev preview had the best benchmark results over the newer versions of Windows 8 .. with the same exact hardware, so Microsoft already gimped it for AMD users it seems..

 

I see people pushing VS2012 but if it runs on only Windows 8 then I wont be using it .. ill stick with VS2010 or CodeBlocks or Dev-C++ or something..

 

EDIT: Oh and thanks for the info Josh!

Share this comment


Link to comment

I see people pushing VS2012 but if it runs on only Windows 8 then I wont be using it .. ill stick with VS2010 or CodeBlocks or Dev-C++ or something..

VS 2012 runs on Windows 7, actually.

Share this comment


Link to comment

VS 2012 runs on Windows 7, actually.

 

Good to know then, had some people complaining on other forums that it would only run on Windows 8 or certain features would only work on Windows 8..

 

So thats good info thanks.

Share this comment


Link to comment

C++ is C++. It is cross platform code. the goal of LE3 is to be cross platform. So lets not limit ourselves to a particular IDE. As long as the engine is made cross platform why does it matter which IDE LE3 supports. That should be up to the user. Me personally I like net beans. If it does matter how about this, (so this isn't just a rant) have an option to use LE2 or LE3 in the updater however, this may mess with some of the business particulars that josh may have in mind.

Share this comment


Link to comment

C++ is C++. It is cross platform code. the goal of LE3 is to be cross platform. So lets not limit ourselves to a particular IDE. As long as the engine is made cross platform why does it matter which IDE LE3 supports. That should be up to the user. Me personally I like net beans. If it does matter how about this, (so this isn't just a rant) have an option to use LE2 or LE3 in the updater however, this may mess with some of the business particulars that josh may have in mind.

I distribute a static library and there is no standard format for this. It varies from compiler to compiler.

 

Anyways, 2010 seems like the most logical choice to me.

Share this comment


Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...