J'utilise VS2008 pour le code de port de VC6. Quand j'ai couru la nouvelle application de construction, je reçois cette erreur "R6031 Attemp pour initialiser le CRT plus d'une fois.Cela indique un bug dans votre application".Tentative d'initialisation du CRT plus d'une fois
Il y a un total de 21 dll qui impliquent dans la construction de cette application. Certaines DLL contiennent des fichiers .c et appellent explicitement _CRT_INIT() dans DllMain. code ci-dessous:
BOOL APIENTRY DllMain (HANDLE hModule, DWORD dwReason, LPVOID lpReserved)
{
switch(dwReason)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
if(!_CRT_INIT(hModule, dwReason, lpReserved))
return FALSE;
break;
}
return TRUE;
}
Je ne sais pas comment résoudre ce problème. Ai-je besoin de commenter l'appel à _CRT_INIT()?
Merci d'avance.
MSDN dit que le point d'entrée de la DLL doit explicitement appelez CRT_INIT() sur le processus attach et detache le processus – ramrocket
En 15 ans de programmation Win32, je n'ai jamais eu besoin d'initialiser explicitement le CRT dans DllMain. Je suis d'accord avec la réponse d'Egrunin. –