Jump to content
  • Advertisement
Sign in to follow this  
soconne

Compiled in VS 2005, Win XP....won't run in Vista??

This topic is 3970 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

I have a C++ project that I've compiled in Windows XP using VS 2005. Runs just fine, no problems. But when I copy it to Vista and run it, it doesn't start and Vista tells me the configuration doesn't match the app. I can recompile it in Vista using VS 2008 and it runs just fine, so its not the code. What is causing this? The C++ project is strictly a win32 app, no .NET code is used. But the project is actually a solution made up of 4 subprojects, 3 of which are DLLs used by the 4th.

Share this post


Link to post
Share on other sites
Advertisement
My guess is it's a manifest issue. I've had problems where the manifest created by VS2005 for an application specifies a specific version of the VS2005 C runtime, so when trying to run that on another machine it fails because it can't find the required version (major.minor of what's installed and required are the same, but build number is different). I've even had it fail because the manifest specified 2 different versions of the same runtime DLLs, 1 of which wasn't present on the system.

To check if this is what's happening, check in your build directory for the intermediate manifest file and open it in notepad (it's XML). Take a look at what DLLs and versions it requires then check in the C:\Windows\WinSxS directory on your Vista machine to see if that version is present.

Share this post


Link to post
Share on other sites
Quote:
Original post by steven katic
You can also try setting the compatiblility mode to the os of your choice in the properties of the executable(as an interim solution).


It wont' help; this is a runtime dll problem as joanusdmentia pointed out above; the target machine simply doesn't have the dlls it needs to run the application.

Share this post


Link to post
Share on other sites
Have a look at depends http://www.dependencywalker.com/ - it is a (very) lightweight application that will trace all the dll dependencies of an executable. It will show you if any dll's that the app expects are missing on the target machine. Run it against your app on the Vista machine.

For instance, it might be that you have compiled in debug and not release (or inadvertently have a misconfig on a specific module indicating debug) and then when you copy binaries to another machine the debug version of the dll's are unavailable. I found that Depends.exe was invaluable when I was trying to find a problem in a service I had written. I had a situation where I could not even attach a debugger to the process because of a failure to get onto the stack due a runtime dll load failure but depends.exe showed me where the problem was immediately.

Share this post


Link to post
Share on other sites
Have you disabled the UAC or run your app as Administator? This might help sometimes, especially your app tries to access OS-level settings!

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

GameDev.net is your game development community. Create an account for your GameDev Portfolio and participate in the largest developer community in the games industry.

Sign me up!