There's been talk about addressing this (see bugzilla), but I don't know if it's been done yet. If you're building a VC++ static library, both of the PLATFORM_... macros should expand to nothing:
#define PLATFORM_EXPORT #define PLATFORM_IMPORT -----Original Message----- From: Martin Bosticky [mailto:mbosticky@;aimltd.co.uk] Sent: Friday, October 25, 2002 5:22 AM To: [EMAIL PROTECTED] Subject: RE: compiling xerces into a static library Thanks for the comments. I would suspect that they probably suppress the warning as you said but somehow I have not duplicated that in my workspace. That would be an easy fix anyway. However I am annoyed :o( with the warnings that I get when linking to the static library (for example) LINK : warning LNK4049: locally defined symbol ""public: void __thiscall AbstractDOMParser::setValidationSchemaFullChecking(bool)" (?setValidationSchemaFullChecking@AbstractDOMParser@@QAEX_N@Z)" imported FROM MSDEV HELP: exported symbol "symbol" also imported The symbol was both exported from and imported to the program. I checked the definition of the #defines and found #if defined(PROJ_DOM) #define CDOM_EXPORT PLATFORM_EXPORT #else #define CDOM_EXPORT PLATFORM_IMPORT #endif in XercesDefs.hpp and #define PLATFORM_EXPORT __declspec(dllexport) #define PLATFORM_IMPORT __declspec(dllimport) in VCPPDefs.hpp so at first glance I would expect this should work correctly as I am not (knowingly) defining PROJ_DOM in my project and I am defining it in the XercesLib project. Hence exporting from XercesLib and importing into my own project. Has anybody resolved this already? Martin Bosticky Software Engineer Action Information Management Ltd. Tel: (01225) 711200 Fax: (01225) 711222 Email: [EMAIL PROTECTED] -----Original Message----- From: Jesse Pelton [mailto:jsp@;PKC.com] Sent: 24 October 2002 19:31 To: '[EMAIL PROTECTED]' Subject: RE: compiling xerces into a static library I figured it had to be something like that, and that had it been serious, it would have 1) been an error rather than a warning, 2) blown up at some point and/or 3) been done differently in the first place. I don't know whether the warning occurs if you build the DLL version. I, too, would be surprised if it didn't, unless the stock makefile suppresses the warning with /wd4355. -----Original Message----- From: Mark Weaver [mailto:mark@;npsl.co.uk] Sent: Thursday, October 24, 2002 2:20 PM To: [EMAIL PROTECTED] Subject: RE: compiling xerces into a static library #pragma warning (disable: 4355) :) I'm surprised that you don't get this warning regardless of static compilation. It means that you are passing 'this' to a member during construction. The problem is that 'this' has not been fully constructed, so you could get explosions; e.g. class Y; class X { public: X(Y* y) { y->die(); } }; class Y { public: Y() : m_x(this), m_s("foobar") {} void die() { std::cout << m_s; } private: X m_x; const char *m_s; }; here X attempts to use the unconstructed Y. This will cause undefined behaviour. It's not actually illegal to do this however, as if X just stores a pointer to Y, and does not use it until after construction is complete, then it works. Mark > -----Original Message----- > From: Jesse Pelton [mailto:jsp@;PKC.com] > Sent: 24 October 2002 18:45 > To: '[EMAIL PROTECTED]' > Subject: RE: compiling xerces into a static library > > > I build a static Xerces library using VC 7. (Did it with VC 6, too, but > we've moved on.) I haven't encountered any problems. I haven't made the > effort to understand the warnings, preferring blissful ignorance. > > -----Original Message----- > From: Martin Bosticky [mailto:mbosticky@;aimltd.co.uk] > Sent: Thursday, October 24, 2002 9:19 AM > To: [EMAIL PROTECTED] > Subject: compiling xerces into a static library > > > Hi. > > I have compiled xerces into a static library on VC6 since I wanted to > add an XML parser but didn't want to carry the distribution overhead > needs > > Is such practice discouraged? I nave noticed I got extra 8 warnings when > compiling it and well, I am not sure if that would make the library > unstable when compiled that way. > > The lib ends up 24 MB (release) and massive 41 MB in debug and after > compile with my originally 384 Kb application becomes about 4MB in Debug > and 156KB in release becomes 1.4MB which is kind of reasonable I > suppose. > > Any comments on this kind of compiling strategy are welcome. > > > > By the way, I got these warnings when compiling the static library > xerces and they could be because I have only guessed at the appropriate > settings: > > xercesc\dom\impl\DOMDocumentImpl.cpp(108) : warning C4355: 'this' : used > in base member initializer list > xercesc\dom\impl\DOMDocumentImpl.cpp(109) : warning C4355: 'this' : used > in base member initializer list > xercesc\dom\impl\DOMDocumentImpl.cpp(138) : warning C4355: 'this' : used > in base member initializer list > xercesc\dom\impl\DOMDocumentImpl.cpp(139) : warning C4355: 'this' : used > in base member initializer list > > xercesc\dom\impl\DOMParentNode.cpp(73) : warning C4355: 'this' : used in > base member initializer list > xercesc\dom\impl\DOMParentNode.cpp(81) : warning C4355: 'this' : used in > base member initializer list > > xercesc\dom\deprecated\DocumentImpl.cpp(99) : warning C4355: 'this' : > used in base member initializer list > xercesc\dom\deprecated\DocumentImpl.cpp(118) : warning C4355: 'this' : > used in base member initializer list > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
