I recently was able to successfully build an exe on my own XP Pro box and it
worked fine. This application includes Ruby packages that are C extensions.
I gave it to a co-worker to test on his XP Pro box and he got this error:
“This application has failed to start because MSVCR70.dll was not found.
Re-installing the application may fix this problem”.
Now, I do have VC++ 7 on this box, and I’m assuming that’s where the dll
came from. My question is, why does it need this dll? Is it because of the
C extensions? Or did I build it badly? Is there a way around this or will
I simply have to distribute the dll with the exe file as part of a
distribution?
I recently was able to successfully build an exe on my own XP Pro box
and it worked fine. This application includes Ruby packages that are C
extensions. I gave it to a co-worker to test on his XP Pro box and he
got this error:
“This application has failed to start because MSVCR70.dll was not
found. Re-installing the application may fix this problem”.
Now, I do have VC++ 7 on this box, and I’m assuming that’s where the dll
came from. My question is, why does it need this dll? Is it because of
the C extensions? Or did I build it badly? Is there a way around this
or will I simply have to distribute the dll with the exe file as part of
a distribution?
msvcr*.dll and msvcrt.dll are the runtime libraries for windows.
You either redistribute them, link statically or do it with VC++6.0
whose runtime is in all installations of Win98 or later.
I don’t know anythign about exerb (something I need to rectify), but
check to see if it will allow you to built statically.
Cheers,
V.-
I recently was able to successfully build an exe on my own XP Pro box
and it worked fine. This application includes Ruby packages that are C
extensions. I gave it to a co-worker to test on his XP Pro box and he
got this error:
“This application has failed to start because MSVCR70.dll was not
found. Re-installing the application may fix this problem”.
Now, I do have VC++ 7 on this box, and I’m assuming that’s where the dll
came from. My question is, why does it need this dll?
MSVCRT70.DLL is the C runtime library. You can think of it as the
equivalent of, say, libc.so on a Linux system (maybe Solaris too).
Is it because of the C extensions?
Yes
Or did I build it badly?
Not very familiar with exerb, but I doubt this indicates that you did
anything wrong. exerb probably just doesn’t bundle dependencies such as
this one into its archive.
Is there a way around this or will I simply have to distribute the dll
with the exe file as part of a distribution?
I think the latter. You want to make sure that this DLL is somewhere in
the user’s PATH.
msvcr*.dll and msvcrt.dll are the runtime libraries for windows.
You either redistribute them, link statically or do it with VC++6.0
whose runtime is in all installations of Win98 or later.
I don’t know anythign about exerb (something I need to rectify), but
check to see if it will allow you to built statically.
If you google for msvcr70.dll, first hit allows you to download it (you
can feel lucky). msvcr*.dll are indeed the C runtime libs for windows,
just like the vbrun*.dll were (still are?) the runtimes for VB. You should
either put it in the same dir as the executable, or somewhere reachable by
the PATH variable.
Also, on my WinXP, the dll is present as part of the .NET stuff, but it’s
not anywhere near the dirs in my PATH variable… A simple search of the
windows dir and the dll might turn up. Then just copy it to the windows
dir and your friend should be able to run any executable you build with
exerb.