[xsd-users] Issue with VS2017

rjl at third-monday.com rjl at third-monday.com
Fri Mar 29 13:05:35 EDT 2019


Ack!  Spoke tooooo soon.  Now I'm getting the following:

error C2872: 'DOMDocument': ambiguous symbol

I see some other messages in this mailing list that says this is fixed 
in a pre-release binary (4.1.0).

For now, I'll move back to XSD 3.3.0.

r

On 2019-03-29 11:48, rjl at third-monday.com wrote:
> This morning's updates:
> 
> 1) I upgraded to XSD 4.0.0 - no need to upgrade Xerces (from 3.1.1) as
> far as I can tell.
> 
> 2) I implemented the updates to the XML code generation as described
> in the 1st note below (added ' --export-xml-schema --hxx-prologue
> "\#include \"model/util/Defines.h\"" --export-symbol MODEL_EXPORTAPI)
> to the xmlSchema.h generation.
> 
> 3) Pushed on the 'static debug' build for the model n engine libraries
> to make sure they were, indeed, 'debug'-worthy builds.
> 
> 4) Figgered out how to make my app programs depend on the libraries
> using Qt qmake variables so they're relinked should any of the
> libraries change.
> 
> Everything seems to work.  Point '2)' really isn't needed now as I'm
> building my libs statically.
> 
> I think I can enter the weekend with something accomplished!  This has
> been bugging me for days....
> 
> Thanks again for the explanation about the VS changes w.r.t. 
> 'std::string'.
> 
> r
> 
> On 2019-03-29 09:57, rjl at third-monday.com wrote:
>> Thanks for the response.
>> 
>> Yes, I can upgrade to the latest XSD.  Will that require an upgrade to
>> Xerces, as well?
>> 
>> All of the XSD Tree generated code is linked into the 'model'
>> DLL/library.  The 'engine' DLL/library and all of the apps use those
>> structures from the model library.
>> 
>> VS2017 complains mightly about classes in a DLL library with
>> 'dllexport' that contain 'std::string' attributes (e.g., 'private:
>> std::string _name;' in the class).
>> 
>> That's what that 'NamedObject' class looks like as I referenced in my
>> original msg.
>> 
>> I like using DLLs for development because they simplify building as
>> I'm working - no need to re-link apps when some lines in a library
>> changed.
>> 
>> However, I think I may have made progress by doing away with DLLs
>> during development.  I think I can build 'static debug' libraries and
>> apps.  That'll increase development time (e.g,. must wait for apps to
>> re-link) but it'll save the rest of the hair on my head as I move
>> forward.
>> 
>> I'll let you know what I find after upgrading and reading the
>> discussions listed below.
>> 
>> Thanks again,
>> r
>> 
>> On 2019-03-29 09:32, Boris Kolpackov wrote:
>>> rjl at third-monday.com <rjl at third-monday.com> writes:
>>> 
>>>> I'm using XSD 3.3.0 and Xerces 3.1 on Windows.
>>>> 
>>>> [...]
>>>> 
>>>> I'm migrating to VS2017 [...]
>>> 
>>> As a first step, I would suggest that you upgrade to at least XSD 
>>> 4.0.0,
>>> or even to the next version pre-release:
>>> 
>>> https://codesynthesis.com/~boris/tmp/xsd/4.1.0.a11/
>>> 
>>> 
>>>> I'm getting some rather strange LNK2005 errors on std::string 
>>>> methods
>>>> and operators.
>>> 
>>> In a nutshell, the reason for these errors is:
>>> 
>>> 1. XSD implements certain basic types by deriving from std::string
>>>    (because they have the 'is-a' relationship to xsd:string in XML
>>>    Schema).
>>> 
>>> 2. MSVC automatically applies the dllimport/dllexport of a derived
>>>    class to a base class that doesn't have its own (and which
>>>    std::string doesn't).
>>> 
>>> 3. In MSVC 2017 (but not 2008) the implementation of std::string
>>>    now contains non-inline member functions (or inline ones that
>>>    the compiler chooses not to inline in Debug).
>>> 
>>> 4. If you have two or more DLLs that include the generated code,
>>>    then you may end up with duplicate std::string symbols because
>>>    they both export them (see 2 above).
>>> 
>>> There are various ways to solve this problem with the easiest
>>> being to place all the generated code into a single DLL. For
>>> other ways see this earlier post:
>>> 
>>> http://www.codesynthesis.com/pipermail/xsd-users/2010-September/003011.html
>>> 
>>> With this email containing more analysis/information on the problem:
>>> 
>>> http://www.codesynthesis.com/pipermail/xsd-users/2010-September/003019.html



More information about the xsd-users mailing list