Jump to content
  • Advertisement
Sign in to follow this  
Mybowlcut

Game not working on other computers

This topic is 3634 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

Hey. I've recently been trying to get my Checkers game to work on other people's computers. I started a thread with the link to my game and the first person that replied said the game didn't work. My program is in C++. It uses the SDL libraries and my own library which I set up as a static library in VS. I didn't include my library since I thought it would be merged into the .exe... but here are the files I included: SDL_ttf.dll SDL.dll SDL_image.dll SDL_mixer.dll libpng12.dll zlib1.dll vcredist_x86.exe Note: I also included the .exe itself and all the game data (images, etc.). I have dependency walker and I have tried using it but I don't understand it. I basically need to understand why the game won't work on other computers... so any advice on how to do this would be great. Cheers.

Share this post


Link to post
Share on other sites
Advertisement
Dependency walker categorizes DLL's into those present on the current machine (green) and those not present, or missing entry points (red). Missing DLL's and entry points are listed at the bottom.

Run walker on someones machine on which the game isn't working. If DLL's are found to be missing, put them on the system (either in the game directory or the system directory) and register them with regsrv32. If entry points are missing its normally due to an old DLL version being on the system, in which case it just needs to be upgraded.

A common issue is that people build debug builds by accident and other people don't have the debug DLL's on their system.

Share this post


Link to post
Share on other sites
Hey thanks for the reply.

I haven't got anyone on MSN to use Dependency Walker, otherwise I'd try that option.

I took a screen shot of dependency walker on my computer, just in case:


The only ones that are red are those 3.

If anyone would like to run Dependency Walker on my game's .exe I'd really appreciate it as I don't have anyone else who can.

Share this post


Link to post
Share on other sites
NisseBosseLasse ran it on his computer (thanks!). If you check the link to the game topic it says that 3 dlls are missing. I got msvcp80.dll and msvcr80.dll from C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT but I can't find where msvcr80d.dll is.. and I'm not sure of why I need it? This game is built using a release configuration and is a Multi-threaded Debug DLL (/MDd)... so I am confused by the 'd' at the end of msvcr80d.dll.

Share this post


Link to post
Share on other sites
Quote:
Original post by Mybowlcut
This game is built using a release configuration and is a Multi-threaded Debug DLL (/MDd)... so I am confused by the 'd' at the end of msvcr80d.dll.


How the configuration is called ("Release", "Debug" or "Uncle Joe") has no influence on the C++ runtime library your application needs. Only the runtime library you select is relevant, so if you chose "Multithreaded Debug DLL", it will require msvcr80d.dll and msvcp80d.dll.

Selecting "Multithreaded Debug DLL" for your "Release" configuration is probably not a good idea. Release builds should use "Multithreaded DLL" and debug builds should use "Multithreaded Debug DLL".

If you link additional libraries (such as SDL), you also need to provide the runtimes those libraries require.

Share this post


Link to post
Share on other sites
Quote:
Original post by Mybowlcut
I got msvcp80.dll and msvcr80.dll from C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT but I can't find where msvcr80d.dll is.


Some more advice:

You cannot just copy msvcr80[d].dll and msvcp80[d].dll into the application's folder. It will not work.

Windows XP and later have a feature called Side-by-Side installation that allows different versions of DLLs with the same name to coexist. These DLLs are stored in C:\Windows\WinSxS (that's also where you will find msvcr80d.dll and msvcp80d.dll).

However, you also cannot just copy the DLLs into the WinSXS folder. Your players will have to run the vcredist_x86.exe you already seem to have included in your original package.

Another important fact is that you are not allowed to redistribute the debug runtime. The only legal (and as far as I can tell, the only working) way to get this runtime on a system is to install one of the Visual Studio variants that include it.


Deployment can be complicated at times ;)

Share this post


Link to post
Share on other sites
Sorry, I meant to say the game is built as a Multi-threaded DLL not a Multi-threaded Debug DLL. The setup I am using allows me to automatically run the vs redistributable, so it installs everytime you install the game... but even after that it's not working... so I have to get those dlls in there somehow... but you said I can't copy them so what do I do?

Share this post


Link to post
Share on other sites
You need to select Multithreaded DLL in your project's properties as your release configuration is using the debug DLL.

*edit* just read it was a typo!

Share this post


Link to post
Share on other sites
VCredist should install them.


As an alternative method, you might want to make a quick installer using VS and use the Visual C and Common runtime MSM files. MSM are merge modules that tell the program what DLL's to include and install.

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.

Participate in the game development conversation and more when you create an account on GameDev.net!

Sign me up!