stdcxx-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Martin Sebor <se...@roguewave.com>
Subject Re: STDCXX-509
Date Wed, 17 Oct 2007 19:20:18 GMT
Travis Vitek wrote:
>> From: Martin Sebor [mailto:sebor@roguewave.com] 
>>
>> No, you've got it backwards. :) NO_BAD_CAST_ASSIGNMENT means
>> the function is not found in the runtime and that we need to
>> define it in the library. When the macro is not defined
>> (notice the double negative, !NO_XXX), the function will not
>> be defined.
>>
> 
> Yes. Thank you. Apparently I screwed my head on sideways this morning.
>  
>>> The 4.2.0 library
>>> does have the macro defined, so the symbol omitted from the library.
>> The other way around.
> 
> Ah-ha. Nope. Being that my head was screwed on backward, I went back and
> re-checked my previous e-mail on the config macro defines. I was
> backward there also.

Okay, so you reached the right conclusion the first time, just
based on the wrong interpretation of the wrong data. That's
actually pretty amusing, despite the gravity of the problem.

> 
> 
> The 4.1.3 config header has...
> 
>    #define _RWSTD_NO_BAD_CAST_ASSIGNMENT
>    #define _RWSTD_NO_BAD_CAST_COPY_CTOR
>    #define _RWSTD_NO_BAD_CAST_DEFAULT_CTOR
>    #define _RWSTD_NO_BAD_CAST_DTOR
>    #define _RWSTD_NO_BAD_CAST_WHAT
> 
>    #define _RWSTD_NO_BAD_TYPEID_ASSIGNMENT
>    #define _RWSTD_NO_BAD_TYPEID_COPY_CTOR
>    #define _RWSTD_NO_BAD_TYPEID_DEFAULT_CTOR
>    #define _RWSTD_NO_BAD_TYPEID_DTOR
>    #define _RWSTD_NO_BAD_TYPEID_WHAT
> 
>    #define _RWSTD_NO_EXCEPTION_ASSIGNMENT
>    #define _RWSTD_NO_EXCEPTION_COPY_CTOR
>    #define _RWSTD_NO_EXCEPTION_DEFAULT_CTOR
>    #define _RWSTD_NO_EXCEPTION_DTOR
>    #define _RWSTD_NO_EXCEPTION_WHAT
> 
> The 4.2.0 config.h header has the following defines
> 
>    // #define _RWSTD_NO_BAD_CAST_ASSIGNMENT
>    // #define _RWSTD_NO_BAD_CAST_COPY_CTOR
>    #define _RWSTD_NO_BAD_CAST_DEFAULT_CTOR
>    // #define _RWSTD_NO_BAD_CAST_DTOR
>    #define _RWSTD_NO_BAD_CAST_WHAT
> 
>    // #define _RWSTD_NO_BAD_TYPEID_ASSIGNMENT
>    // #define _RWSTD_NO_BAD_TYPEID_COPY_CTOR
>    #define _RWSTD_NO_BAD_TYPEID_DEFAULT_CTOR
>    // #define _RWSTD_NO_BAD_TYPEID_DTOR
>    #define _RWSTD_NO_BAD_TYPEID_WHAT
> 
>    // #define _RWSTD_NO_EXCEPTION_ASSIGNMENT
>    // #define _RWSTD_NO_EXCEPTION_COPY_CTOR
>    // #define _RWSTD_NO_EXCEPTION_DEFAULT_CTOR
>    // #define _RWSTD_NO_EXCEPTION_DTOR
>    // #define _RWSTD_NO_EXCEPTION_WHAT
> 
> So, the 4.1.3 library config figures that the mentioned symbols are not
> in the runtime library, so they are built into the stdlib12d.dll for
> 4.1.3. The 4.2.0 config is 'smarter' and discovers that some of the
> symbols are provided, and omits them. This is consistent with the dump
> of the libraries using 'dumpbin /exports'.

But why is this a problem if the symbols are provided in the
Visual Studio runtime library? Or did you mean "provided by
the compiler unless we declare them" or something like that?

Martin

Mime
View raw message