• 0

An error I'm getting when running MFC C++ application


Question

I just installed visual studio 2005 C++ on a new computer.

I took a MFC C++ Project from another computer and copied to over to this computer. It compiled it and tried to run it and I got this error<attached>.

I'm thinking I have to have something installed on this new computer that I don't already have... but not sure what

Thanks

post-232380-12658378125107_thumb.jpg

Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0

Have you installed the redists of the CRT and MFC version it is linked with? Tried running procmon to see what it's trying to do right before crashing? Tried a debugger?

Not sure what the redists or the CRT and MFC version it is linked with. How would I find that? I ran it in debug mode and I've only gotten this far

post-232380-12658442786547_thumb.jpg

Link to comment
Share on other sites

  • 0

So I went and downloaded dependency walker to see if I have all the DLLs. As you can see I'm missing MSJAVA.dll. I downloaded this file, but I don't know where to put it.

!

post-232380-12659042412324_thumb.jpg

Link to comment
Share on other sites

  • 0

Shouldn't matter where you put it, as long as you regsvr32 it from DOS/command line so Windows knows it's there.

If you put the file in c:\windows\system32 you'd do:

regsvr32 c:\windows\system32\msjava.dll

Link to comment
Share on other sites

  • 0

Not sure what the redists or the CRT and MFC version it is linked with. How would I find that? I ran it in debug mode and I've only gotten this far

Well, you said you compiled it, so...? The redists for the versions that shipped with your version of Visual Studio will be in the redist folder where you installed VS.

Shouldn't matter where you put it, as long as you regsvr32 it from DOS/command line so Windows knows it's there.

If you put the file in c:\windows\system32 you'd do:

regsvr32 c:\windows\system32\msjava.dll

You don't actually "register" DLLs in Windows. There is no such mechanism. What does have to be registered is things like reusable ActiveX/COM interfaces that you want to make available system-wide (and these do it as part of a larger installation process that usually involves other things as well). Most DLLs do not do this and can't be used with regsvr at all. For those it is the path that matters. The loader will look in the same folder as the executable, so that is normally where you would put them instead of messing with system folders.

As for this MSJAVA thing, I'm not convinced that is a problem. Failing to load a library is not always a critical error. My guess is that the file was part of the discontinued Java virtual machine Microsoft once had. I doubt you're using Java, so it's probably being loaded indirectly by something like IE. IE is probably fine with it not being there. I doubt you could just copy the DLL over anyway, because it is likely only one part of the Java VM. You would probably need to install the whole thing in order for the DLL to work, and this isn't possible anymore. Like I said though, I doubt this is the problem.

Link to comment
Share on other sites

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.