Keep Server Online
If you find the Apache Lounge, the downloads and overall help useful, please express your satisfaction with a donation.
or
A donation makes a contribution towards the costs, the time and effort that's going in this site and building.
Thank You! Steffen
Your donations will help to keep this site alive and well, and continuing building binaries. Apache Lounge is not sponsored.
| |
|
Topic: Build with VC: runtime error starting httpd 2.2.4 + ssl |
|
Author |
|
bobhumphrey22
Joined: 10 Jan 2007 Posts: 2
|
Posted: Wed 10 Jan '07 19:53 Post subject: Build with VC: runtime error starting httpd 2.2.4 + ssl |
|
|
on Win 2003 Std R2 32 Bit with VC++ 2005 Express and PSDK-x86 installed (plus Perl, Awk, Nasm, etc)
I compiled openssl 0.9.8d according to instruction. Compiled flawlessly.
Same with the zlib. Both went into httpd srclib dirs.
compiling _apacher worked flawlessly
did the nmake /f Makefile.win installr INSTDIR="m:\www\httpd"
seemed to install fine.
In the bin dir of the install, I tried executing httpd from the command line, and I get the msvrc80.dll not found. So I found it on the machine (in the C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_0de06acd directory) and I copied it to the m:\www\httpd\bin directory as many past posts have suggested. Now, when I try and run httpd from that directory, a dialog pops up and says
"Runtime Error!
Program: M:\www\httpd\bin\httpd.exe
R6034
An application has made an attempt to load the C runtime library incorrectly. Please contact the application's support team for more information."
I'm sorry if I missed something I was supposed to do. I even tried installing the Visual C++ Redistributable Package, but of course it didn't fix this issue. Can someone point me to the step I missed please?
Note: The machine does have .Net 2.0, and all service packs, patches, etc..
thanks in advance
bh |
|
Back to top |
|
tdonovan Moderator
Joined: 17 Dec 2005 Posts: 611 Location: Milford, MA, USA
|
Posted: Thu 11 Jan '07 3:16 Post subject: |
|
|
Did you remember to either copy all the .manifest files to the \bin directory, or else use the MT.exe utility to embed these manifests into the .exe, .dll, and .so files?
Another possibility is the version of the Visual C++ runtime libraries if you have installed Visual C++ 2005 Express Edition Service Pack 1?
The original Visual C++ 2005 Express Edition installed runtime libraries version 8.0.50727.42
Users can download a package with this version from Microsoft at Microsoft Visual C++ 2005 Redistributable Package (x86).
This provides the runtime libraries for any system that needs to run the app.
When you install Visual C++ 2005 Express Edition SP1, the libraries on the VC machine are updated to version 8.0.50727.762
You should have a C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.762_x-ww_6b128700
directory if you have installed SP1. Unfortunately, there is no Microsoft download for this version.
Hope this helps. Please let us know if you still have problems.
-tom-
p.s. Steffen - I see that you have a vcredist_x86-sp1.exe available at Apache Lounge which appears to install the 8.0.50727.762 libraries.
Can you tell us where you got this (or how you built it)?
thx,
-t- |
|
Back to top |
|
Jorge
Joined: 12 Mar 2006 Posts: 376 Location: Belgium
|
Posted: Thu 11 Jan '07 17:23 Post subject: |
|
|
My vs install DVD installed the update files in your VS folder. Try looking there |
|
Back to top |
|
Steffen Moderator
Joined: 15 Oct 2005 Posts: 3093 Location: Hilversum, NL, EU
|
Posted: Thu 11 Jan '07 19:57 Post subject: |
|
|
Indeed as Jorge says, vcredist_x86.exe it installed by the update. I renamed it to vcredist_x86-sp1.exe , just to indentify it.
Steffen |
|
Back to top |
|
tdonovan Moderator
Joined: 17 Dec 2005 Posts: 611 Location: Milford, MA, USA
|
Posted: Fri 12 Jan '07 2:53 Post subject: |
|
|
Thanks Jorge & Steffen. You both must have either the Standard, Professional, or Team edition of Visual Studio.
The free Express edition does not provide vcredist_x86.exe.
This was not a problem with the original version because Microsoft provided a public download for vcredist_x86.exe.
With SP1, Express Edition users have no vcredist_x86.exe and no place to get it.
An unfortunate situation for those who build Apache with the Express Edition.
If you are interested, several of us have been whining about this problem in the MSDN Visual C++ forums.
-tom- |
|
Back to top |
|
Steffen Moderator
Joined: 15 Oct 2005 Posts: 3093 Location: Hilversum, NL, EU
|
Posted: Fri 12 Jan '07 12:24 Post subject: |
|
|
Indeed, I am using the Standard version.
Steffen |
|
Back to top |
|
bobhumphrey22
Joined: 10 Jan 2007 Posts: 2
|
Posted: Tue 16 Jan '07 16:38 Post subject: |
|
|
Thanks tdonovan -- .manifest files was the answer. I found an alternate post from you with a FOR loop to integrate the manifest files with the exe, dll and so files. Interestingly enough, nowhere in the apache official "compile for windows documentation" mentions them. Are those instructions only needed when using the Express Edition to compile? Or only needed with 2005 compilers? Obviously, I'm not sure exactly what the manifest files are from or what they do -- I don't remember having to do that step in the past with older branches/older compilers... |
|
Back to top |
|
tdonovan Moderator
Joined: 17 Dec 2005 Posts: 611 Location: Milford, MA, USA
|
Posted: Tue 16 Jan '07 18:33 Post subject: |
|
|
Bob,
I'm glad to hear you got Apache running.
Yes, manifest files are new since Visual C++ 6.0. The apache docs presume VC6.0, and therefore make no mention of manifest files.
Manifest files are required by C/C++ programs built with all editions of vs2005, not just the Express edition.
Manifest files can be provided as seperate .manifest files or they can be embedded into executables and libraries.
Their purpose is to list the specific versions of runtime libraries needed.
Manifest files are automatically embedded into .exe, .dll, and .so files when Apache is built in the VS2005 IDE.
Unfortunately, they are not automatically embedded in a command-line build, hence the MT commands to insert them into every binary created.
-tom- |
|
Back to top |
|
acid.-.burn
Joined: 15 Jan 2007 Posts: 17
|
Posted: Thu 01 Mar '07 16:29 Post subject: |
|
|
copy all the .manifest files to the \bin directory, or else use the MT.exe utility to embed these manifests into the .exe, .dll and .so files how
& i thought this did it for you ?
Code: | FOR /R %a in (*.exe) DO @if exist %a.manifest mt -nologo -manifest %a.manifest -outputresource:%a;1
FOR /R %a in (*.dll) DO @if exist %a.manifest mt -nologo -manifest %a.manifest -outputresource:%a;2
FOR /R %a in (*.so) DO @if exist %a.manifest mt -nologo -manifest %a.manifest -outputresource:%a;2 |
|
|
Back to top |
|
|
|
|
|
|