httpd-modules-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sindhi Sindhi <sindhi....@gmail.com>
Subject Re: Apache fails to start when Xerces library is used in a C++ module
Date Sun, 31 Mar 2013 11:09:35 GMT
Hello Sorin,

Thanks for your reply.

I tried the below two -

1. I had earlier downloaded Xerces from
http://xml.apache.org/dist/xerces-c/3/binaries/xerces-c-3.1.1-x86_64-windows-vc-10.0.zip
It had xerces-c_3.lib and xerces-c_static_3.lib. The file names indicated
that these are 64-bit binaries.

I added the below in httpd.conf file -
LoadFile
e:/xerces-c-3.1.1-x86_64-windows-vc-10.0/xerces-c-3.1.1-x86_64-windows-vc-10.0/lib/xerces-c_3.lib

Tried to start httpd.exe and got the below error -
e:\httpd-2.4.4-win64\Apache24\bin>httpd.exe
httpd.exe: Syntax error on line 173 of
E:/httpd-2.4.4-win64/Apache24/conf/httpd.conf: Cannot load
E:/xerces-c-3.1.1-x86_64-windows-vc-10.0/xerces-c-3.1.1-x86_64-windows-vc-10.0/lib/xerces-c_3.lib
into server: %1 is not a valid Win32 application.

If I try to load xerces-c_static_3.lib also I get the same error.

2. I downloaded the Xerces source code from
http://xml.apache.org/dist/xerces-c/3/sources/xerces-c-3.1.1.zip and built
it using Visual Studio 2010 as a 64-bit target. This generated
xerces-c_3D.lib.

Changed httpd.conf file,
LoadFile
E:/xerces-c-3.1.1/xerces-c-3.1.1/Build/Win64/VC10/Debug/xerces-c_3D.lib

Tried to start httpd.exe and got the same error.
httpd.exe: Syntax error on line 173 of
E:/httpd-2.4.4-win64/Apache24/conf/httpd.conf: Cannot load
E:/xerces-c-3.1.1/xerces-c-3.1.1/Build/Win64/VC10/Debug/xerces-c_3D.lib
into server: %1 is not a valid Win32 application.

Kindly advice.

Thanks.

On Sun, Mar 31, 2013 at 3:50 PM, Sorin Manolache <sorinm@gmail.com> wrote:

> On 2013-03-31 11:06, Sindhi Sindhi wrote:
>
>> Hello,
>>
>> I have written a C++ module to invoke the Xerces C++ XML library to parse
>> a
>> XML file. I'm unable to start httpd.exe with these changes. Here are the
>> details -
>>
>> a) Apache server version: httpd-2.4.4-win64
>> b) Xerces version: xerces-c-3.1.1-x86_64-windows-**vc-10.0
>> c) Development envt: Visual Studio 2010 with SP1
>>
>> Following are the settings I have made in Visual Studio so that the C++
>> module refers to the Xerces library:
>> 1. Additional Include Directories =
>> E:\xerces-c-3.1.1-x86_64-**windows-vc-10.0\xerces-c-3.1.**
>> 1-x86_64-windows-vc-10.0\**include
>>
>> 2. Additional Dependencies = xerces-c_3.lib and xerces-c_static_3.lib
>>
>> 3. Additional library directories =
>> E:\xerces-c-3.1.1-x86_64-**windows-vc-10.0\xerces-c-3.1.**
>> 1-x86_64-windows-vc-10.0\lib
>>
>> 4. Debugging -> Environment:
>> PATH=E:\xerces-c-3.1.1-x86_64-**windows-vc-10.0\xerces-c-3.1.**
>> 1-x86_64-windows-vc-10.0\bin
>>
>> 5. In the Operating System environment variables, added the path
>> E:\xerces-c-3.1.1-x86_64-**windows-vc-10.0\xerces-c-3.1.**
>> 1-x86_64-windows-vc-10.0\bin
>> to the environment variable PATH
>>
>> 6. The code in my C++ module to invoke the Xerces library routine goes
>> like
>> this -
>>
>> try {
>> XMLPlatformUtils::Initialize()**;  // Initialize Xerces infrastructure
>> }
>> catch( XMLException& e ) {
>> char* message = XMLString::transcode( e.getMessage() );
>> XMLString::release( &message );
>> }
>> XMLPlatformUtils::Terminate();
>>
>> 7. Added the below in httpd.conf file -
>> LoadModule filter_module modules/XercesDLL.dll
>> AddOutputFilterByType TagFilter text/html text/plain text/css
>>
>> 8. If i try to launch httpd.exe from command prompt, I see the below
>> error -
>>
>>> httpd.exe
>>>
>> httpd.exe: Syntax error on line 172 of
>> E:/httpd-2.4.4-win64/Apache24/**conf/httpd.conf: Cannot load
>> modules/XercesDLL.dll into server: The specified module could not be
>> found.
>>
>> Even if I comment out the above C++ code in step 6, Apache still fails to
>> start. That means Apache is failing to load the Xerces library version I'm
>> using, irrespective of the way I'm invoking the library.
>>
>> However, If I write a standalone DLL that invokes the above Xerces library
>> version, and invoke this DLL from an EXE then I'm successfully able to
>> parse the XML. This means, the Xerces library fails to get loaded only by
>> the Apache server for some reason.
>>
>> I think its got something to do with the C to C++ linkage, not sure tho.
>>
>> Any help is highly appreciated.
>>
>
>
> Hello,
>
> Try
>
> LoadFile /absolute/path/to/the/xerces/**lib1
> LoadFile /absolute/path/to/the/xerces/**lib2
> ...
> LoadModule /absolute/path/to/XercesDLL.**dll
>
> For example
>
> LoadFile E:\xerces-c-3.1.1-x86_64-**windows-vc-10.0\xerces-c-3.1.**
> 1-x86_64-windows-vc-10.0\lib\**xerces-c_3.lib and xerces-c_static_3.lib
> LoadFile E:\xerces-c-3.1.1-x86_64-**windows-vc-10.0\xerces-c-3.1.**
> 1-x86_64-windows-vc-10.0\lib\**xerces-c_3.lib and xerces-c_3.lib
> LoadModule E:\workspace\XercesDLL.dll
>
> Maybe you do not need both LoadFiles. Experiment.
>
> Sorin
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message