[ expat-Bugs-432456 ] DLL name 'expat.dll' causes problems
noreply@sourceforge.net
noreply@sourceforge.net
Fri May 24 21:07:02 2002
Bugs item #432456, was opened at 2001-06-12 12:25
You can respond by visiting:
http://sourceforge.net/tracker/?func=detail&atid=110127&aid=432456&group_id=10127
Category: None
Group: Platform Specific
Status: Open
Resolution: None
Priority: 5
Submitted By: Kevin Gilpin (kgilpin)
Assigned to: Fred L. Drake, Jr. (fdrake)
Summary: DLL name 'expat.dll' causes problems
Initial Comment:
On Win32, when attempting to build the XML::Parser
Perl module with expat, the name 'expat.dll' is used
by both projects. This causes problems when running
XML::Parser, because only one of the 2 dlls can be
loaded.
By changing the output target of expat
to 'libexpat.dll' (and generating and linking against
the corresponding libexpat.lib) I was able to get
XML::Parser successfully built and running on Win NT.
----------------------------------------------------------------------
>Comment By: Karl Waclawek (kwaclaw)
Date: 2002-05-25 00:06
Message:
Logged In: YES
user_id=290026
On Linux I was already using libexpat.so and libexpatw.so
(w stands for "wide").
So, why not use libexpat.dll and libexpatw.dll?
Just to create confusion,
Karl
----------------------------------------------------------------------
Comment By: Fred L. Drake, Jr. (fdrake)
Date: 2002-05-23 15:14
Message:
Logged In: YES
user_id=3066
While we may have some "right" to the name "expat" for the
DLL, older versions of expat used "xmlparse" and "xmltok",
and the Perl module started using "expat" (perhaps for some
technical reason, since the Perl module is XML::Parser::Expat).
I'll vote that we should call our DLL "libexpatutf8" when
compiled for UTF-8 output, and "libexpatutf16" when compiled
for UTF-16 output.
Yeah, that's new for everyone, and annoying as hell, but
beats making Expat support both output encodings in one
compiled version. (Well, except when you really want both.)
----------------------------------------------------------------------
Comment By: Nobody/Anonymous (nobody)
Date: 2002-05-21 20:39
Message:
Logged In: NO
It took a coule of hours to get things working on my machine
(Win2k sp2), so I thought I'd post what I did so others won't
waste time. I'm not sure if what I did was the correct method,
but it worked for me.
1) Download and extract the XML::Parser ZIP from CPAN.
3) Replace all occurances of "expat" with "libexpat" in all
files.
3) Rename the Expat directory to libexpat.
4) Rename the expat.pm and expat.xs files accordingly.
5) Open libexpat.xs and change the #include<libexpat.h>
back to #include<expat.h>
6) Build the make files (perl makefile.pl)
7) Open the libexpat makefile and change the
PERLARCHIVE line to read (note, I put expat.h, dll, and lib in
my perl\lib\CORE directory):
PERL_ARCHIVE = $(PERL_INC)\perl56.lib $(PERL_INC)
\expat.lib"
8) Run namke
9) Copy the PERL\lib\CORE\expat.dll to
blib\arch\xml\parser\libexpat and run 'nmake test'.
----------------------------------------------------------------------
Comment By: Greg Stein (gstein)
Date: 2002-05-17 20:55
Message:
Logged In: YES
user_id=6501
Calling the library expat2.dll would be fine with me.
libexpat.dll might also be fine.
But also note: *we* are Expat, not the Perl extension. We
have more "right" to expat.dll if that is what we choose to do.
----------------------------------------------------------------------
Comment By: Fred L. Drake, Jr. (fdrake)
Date: 2001-10-01 18:08
Message:
Logged In: YES
user_id=3066
So this appearantly never worked with Expat 1.95+. Sigh.
We could go back to xmlparse.dll I suppose, but I don't
really like that. I don't know that we've retained enough
compatibility with that. Perhaps "expat2" would be good
enough, since the real target right now is a stable Expat 2.0.
I'll think about this a little more, but I'd like to have it
solved in Expat 1.95.3.
Assigning to me since Clark has been abducted by aliens.
----------------------------------------------------------------------
Comment By: Kevin Gilpin (kgilpin)
Date: 2001-10-01 17:51
Message:
Logged In: YES
user_id=44882
The problem is that the Perl extension consists of 2 dlls:
1) the expat DLL, which does not contain any perl references
2) the perl -> expat DLL, which references both the Perl
APIs and the Expat APIs
Both of these DLLs are called 'expat.dll', which is a
problem b/c Windows will cannot tell the difference between
them when the Perl program is run
----------------------------------------------------------------------
Comment By: Fred L. Drake, Jr. (fdrake)
Date: 2001-10-01 16:26
Message:
Logged In: YES
user_id=3066
Thinking about this again, I realize I don't know enough
about the Perl extension machinery and mod_perl to be sure
of this. Is mod_perl providing an expat.dll which is
something different, or is it a different version of that
mod_perl uses?
We need a mod_perl/XML::Parser expert to answer reports like
this one! Leaving this one assigned to Clark until we have
such a person with available time.
----------------------------------------------------------------------
Comment By: Fred L. Drake, Jr. (fdrake)
Date: 2001-07-25 12:39
Message:
Logged In: YES
user_id=3066
This relates to having multiple versions of the library being made available in the same process. Assigned to Clark since he might have more of the context information related to XML::Parser.
----------------------------------------------------------------------
You can respond by visiting:
http://sourceforge.net/tracker/?func=detail&atid=110127&aid=432456&group_id=10127