Bonjour,

Je développe actuellement une extension de WinDbg, en C++. J'ai écrit une classe qui, entre autres, utilise des std::string et std::wstring.
J'inclus donc <string> dans maclasse.h .

Quand je compile, voici les amabilités que me sort le compilo (les détails de la plate-forme suivent) -> copié à la fin pour lisibilité.

J'ai l'impression qu'il doit manquer un répertoire dans mon PATH, ou qu'il doit manquer un #define quelque part, mais je ne connais pas assez bien le DDK de windows pour ça.
A noter qu'avant de rajouter cette classe, je n'avais que des fonctions en C, et je n'avais pas activé les switchs USE_NATIVE_EH et USE_STL. Il suffit que je retire la ligne #include <string> pour que les messages d'horreur disparaissent (mais je n'ai plus string ni wstring, sniff).

J'aimerais bien ne pas revenir à strcmp et tout ce qui s'ensuit... Quelqu'un saurait-il m'aider par pitié ??? Merci !

***

Je compile dans VS .NET 2003 avec le script ddkbuild.bat.
Voici mon fichier "sources" (commentaires ajoutés pour lisibilité) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
// je définis la cible
TARGETNAME=gdbstubext
TARGETPATH=obj
TARGETTYPE=DYNLINK
DLLENTRY=_DllMainCRTStartup
 
// j'étends les PATH pour inclure le SDK de WinDbg
!if "$(DBGSDK_INC_PATH)" != ""
INCLUDES = $(DBGSDK_INC_PATH);$(INCLUDES)
!endif
!if "$(DBGSDK_LIB_PATH)" == ""
DBGSDK_LIB_PATH = $(SDK_LIB_PATH)
!else
DBGSDK_LIB_PATH = $(DBGSDK_LIB_PATH)\$(TARGET_DIRECTORY)
!endif
 
// les libs à ajouter
TARGETLIBS=$(SDK_LIB_PATH)\kernel32.lib \
            $(SDK_LIB_PATH)\ole32.lib \
           $(DBGSDK_LIB_PATH)\dbgeng.lib \

// des switch de compilation dont je ne suis pas sûr
USE_NATIVE_EH=1
USE_STL=1
UMTYPE=windows
MSC_WARNING_LEVEL = /W4
 
SOURCES= <mes sources>

et voici les messages d'erreur:


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
d:\winddk\3790.1830\inc\crt\xlocale(394) : error C2220: warning treated as error - no object file generated
d:\winddk\3790.1830\inc\crt\xlocale(394) : error C4511: 'std::codecvt<wchar_t,char,mbstate_t>' : copy constructor could not be generated
d:\winddk\3790.1830\inc\crt\xlocale(394) : error C4512: 'std::codecvt<wchar_t,char,mbstate_t>' : assignment operator could not be generated
d:\winddk\3790.1830\inc\crt\xlocale(608) : error C4511: 'std::ctype<char>' : copy constructor could not be generated
d:\winddk\3790.1830\inc\crt\xlocale(608) : error C4512: 'std::ctype<char>' : assignment operator could not be generated
d:\winddk\3790.1830\inc\crt\xlocale(509) : error C4511: 'std::ctype<_E>' : copy constructor could not be generated
d:\winddk\3790.1830\inc\crt\istream(590) : error see reference to class template instantiation 'std::ctype<_E>' being compiled
d:\winddk\3790.1830\inc\crt\xlocale(509) : error C4512: 'std::ctype<_E>' : assignment operator could not be generated