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
Partager