[DDK 3790.1830] C++: inclure <string> fait échouer la compilation
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:
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:
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 |