0
0

We are trying to create a program using FMOD and OpenGL in Visual Studio. When deploying to Windows XP, the following error occurs:

The procedure entry point _except_handler4_common could not be located in the dynamic link library msvcrt.dll

We put the exe in a folder with fmod dlls and other required dlls for OpenGL. The program runs fine on any Windows 7 machine, but fails to run on XP. We have tried compiling on both XP and 7, but it never runs on XP, except the machine we used to compile. (to clarify – works on all machines we have compiled on, 7 & XP, and works on all 7 machines)

It seems fmod is dependent upon a certain version of the msvcrt.dll, which must be different from other msvcrt dlls.

We’ve also tried linking with both static and dynamic runtime libraries – neither works.

Our project is due Friday, PLEASE HELP!!!!

  • You must to post comments
0
0
  • You must to post comments
0
0

Yes, your issue with with CRT versions. This can be an absolute nightmare, I just had issues with this just last week while setting up my machine to build our tools.

CRT stands for C run-time libraries, these are included in windows and there are MANY different versions. Service packs and security updates often include new versions of the CRT. Some security updates will change which version of CRT visual studio uses.

For your program to run on any windows machine, that machine must have a version of the CRT that matches what the program was compiled with. To see which versions of the CRT are on a windows machine, take a look in C:\Windows\winsxs.

The FMOD dlls use a version of the CRT which is on every windows machine since win95 so you wont get any compatibility issues there.
To work out what CRT version the other dlls and your exe uses, you can open those files (the actual .exe and .dll files) in visual studio. (You cannot drag these files into VS, you have to go File->Open->File…)

Once the file is open, you should see a tree of items, expand the one "RT_MAINFEST". It should contain some binary data called "1 [English (United States)]", double click that. Now you should be able to see the binary data on the left side and on the right side you’ll see the human readable form. The CRT version is the part that says something like:
version="8.0.50727.4053"

Inside your visual studio directory you can see what version of the CRT you are compiling with. For me this is:
C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT
Open the .manifest file in any text editor to see the version.

Now to make your program work on any windows computer, take the files in that directory (there should be one manifest file and 3 dlls). Copy them into the directory of your executable.

  • You must to post comments
0
0

thank you for your fast reply. One question, which files to I open through VS to check the version?

  • You must to post comments
0
0

I have edited my post to make that more clear

-Pete

  • You must to post comments
0
0

thats what I thought you meant. Thanks. we have version number from the exe, what do we do with that info? and what dlls should we check, msvcrt.dll or the ones we use with opengl or both? thanks again, you are being a tremendous help

  • You must to post comments
0
0

I have updated the post to be a bit clearer about this as well.

  • You must to post comments
0
0

how do we find the files with the matching version? the files in our directory (similar to the directory you listed for your computer) are of a different version

  • You must to post comments
0
0

ok we found the files with the matching version. we tried porting those with the other dlls and the exe and the same error occurs. the version is 9.0.21022.8

  • You must to post comments
0
0

I did some investigation into your problem. It seems your issue may not be CRT versions and it might be that you have replaced the msvcrt.dll on the XP machine with a Vista version.

See this link:
http://support.microsoft.com/kb/324762

  • You must to post comments
0
0

are you referring to the xp computer we’ve compiled with? because we’ve pretty much put that away and the most recent compilations of our program have been made on a windows 7 machine and we have tried testing it on at least 2 xp machines, one in a school computer lab, and one on a separate laptop that has not been used at all for development (in fact I’m sure its never been coded on at all).

some of the forums we’ve found that seem to relate to our problem are:

http://us.generation-nt.com/answer/msvc … tml?page=1

http://stackoverflow.com/questions/1075 … assemblies

  • You must to post comments
0
0

so basically we are now using our windows 7 machines to compile and checking versions on windows 7 and have copied the dlls and manifests of the proper version and tested our exe on XP, which is continually giving us the error I posted in the first post

  • You must to post comments
Showing 11 results
Your Answer

Please first to submit.