You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@stdcxx.apache.org by Nadine Faizant <na...@nautitia.fr> on 2006/11/09 16:02:15 UTC

Conflict beetween stdcxx and visual hash_map implementation at compilation

    Hello,

    I finally understand that hash_map is not part of STL :-(   I found the stdext::hash_map from VC compilator extension. While I'm compiling my code using strdcxx STL I have got compilation error under Visual 8


Here is my c++ source.

#include <hash_map>

#include <tchar.h>

int _tmain(int argc, _TCHAR* argv[])

{

typedef stdext::hash_map<int, std::string, std::string, std::string> tutu;

return 0;

}

Output command:

see attach ziped file

Compilation command :

/Od /I "D:\NPTE\dev\src\cpp\externals\win32\include" /I "D:\NPTE\dev\src\cpp\externals\win32\include\ansi" /I "D:\NPTE\dev\src\cpp\externals\win32\include\15d" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_RWSTD_USE_CONFIG" /D "_RWSHARED" /D "_RWSTDDEBUG" /D "_UNICODE" /D "UNICODE" /Gm /EHsc /RTC1 /MDd /Fo"Debug\\" /Fd"Debug\vc80.pdb" /W3 /nologo /c /Wp64 /ZI /TP /errorReport:prompt

If i do not use stdcxx (no include file and preprocessor flags), there is no error. I have tried a make -E, but I don't understand what happens (attach ziped  file).

Any help appreciated,

    Thanks,

    Nadine


--------------------------------------------------------------------------------

Nadine Faizant 
NewPhenix 
Z.A. - 5, Rue de l'Auberte 
30 133 Les Angles 


Tél : 04 90 26 74 82 
Fax : 04 90 26 90 84 
Courriel : nadine.faizant@nautitia.fr 

--------------------------------------------------------------------------------

Re: Conflict beetween stdcxx and visual hash_map implementation at compilation

Posted by Martin Sebor <se...@roguewave.com>.
Nadine Faizant wrote:
>  
>     Hello,
>  
>     I finally understand that hash_map is not part of STL :-(   I found 
> the stdext::hash_map from VC compilator extension. While I'm compiling 
> my code using strdcxx STL I have got compilation error under Visual 8
>  
>  
> Here is my c++ source.
>  
> 
> #include <hash_map>

You can't mix stdcxx or any other third party implementation with
the native C++ standard library. All headers must come from the
same implementation of the C++ standard library, and so must all
the libraries you link with. It's quite likely that VC++ hash_map
makes assumptions about some other components of the library that
don't hold for the third party implementation.

> 
> #include <tchar.h>
> 
> int _tmain(int argc, _TCHAR* argv[])
> 
> {
> 
> typedef stdext::hash_map<int, std::string, std::string, std::string> tutu;
> 
> return 0;
> 
> }
> 
> Output command:
> 
> see attach ziped file

 From the make-E.txt file it's clear that you are mixing VC++ headers
with those of stdcxx in the same translation unit. That's wrong. You
need to pick one implementation and stick with it.

Martin

> 
> Compilation command :
>  
> /Od /I "D:\NPTE\dev\src\cpp\externals\win32\include" /I 
> "D:\NPTE\dev\src\cpp\externals\win32\include\ansi" /I 
> "D:\NPTE\dev\src\cpp\externals\win32\include\15d" /D "WIN32" /D "_DEBUG" 
> /D "_CONSOLE" /D "_RWSTD_USE_CONFIG" /D "_RWSHARED" /D "_RWSTDDEBUG" /D 
> "_UNICODE" /D "UNICODE" /Gm /EHsc /RTC1 /MDd /Fo"Debug\\" 
> /Fd"Debug\vc80.pdb" /W3 /nologo /c /Wp64 /ZI /TP /errorReport:prompt
> If i do not use stdcxx (no include file and preprocessor flags), there 
> is no error. I have tried a make -E, but I don't understand what happens 
> (attach ziped  file).
>  
> Any help appreciated,
>  
>     Thanks,
>  
>     Nadine
> ------------------------------------------------------------------------
> < b>*Nadine Faizant*
> *NewPhenix*
> Z.A. - 5, Rue de l'Auberte
> 30 133 Les Angles
> 
> Tél : 04 90 26 74 82
> Fax : 04 90 26 90 84
> Courriel : nadine.faizant@nautitia.fr <ma...@nautitia.fr>
> ------------------------------------------------------------------------