Menu

#172 DLLs are not drop-in compatible

Feature Request
closed-fixed
6
2002-11-20
2002-07-09
No

For Windows DLLs, Expat should be using a .DEF file
instead of __declspec(dllexport) to control the export
of symbols. Using a .DEF file allows symbols to have
the same ordinal position in the export table of the
DLL regardless of accidents of the compiler's
organization of the table, allowing newer DLLs to
replace older DLLs by simply dropping them in place.

More information on DLL exports:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore98/HTML/_core_determine_which_exporting_method_to_use.asp

This feature request is based on an email conversation
with Nick Lehman, following up from:
http://sourceforge.net/mailarchive/message.php?msg_id=1783043

Discussion

  • Fred L. Drake, Jr.

    Logged In: YES
    user_id=3066

    It looks like the .DEF file should be easy enough to create,
    and a nuissance to maintain. I'm going to plan on getting
    this done in the 1.95.5 release, since we're too close to
    the 1.95.4 release to make a mess of things now.

    The big question that comes up is this: should the symbols
    defined in lib/xmltok.h be exported, or only the symbols
    from expat.h? Originally, these were exported from two
    separate DLLs, but it's not clear the API defined in
    xmltok.h is really intended to be public.

    If you have a reasoned opinion, or use the xmltok.h API,
    please follow up to this feature request.

     
  • Karl Waclawek

    Karl Waclawek - 2002-07-10

    Logged In: YES
    user_id=290026

    Fred,

    are you sure a lot of people are reading this?

    Karl

     
  • Karl Waclawek

    Karl Waclawek - 2002-10-09

    Logged In: YES
    user_id=290026

    I have added a patch #620822.
    Sorry - I realized too late that there was a bug report
    where I could have attached the patch.

    Karl

     
  • Fred L. Drake, Jr.

    • status: open --> closed-fixed
     
  • Fred L. Drake, Jr.

    Logged In: YES
    user_id=3066

    Fixed by patch #620822, which has already been integrated
    for 1.95.6.

     

Log in to post a comment.