我正在使用VS2008從VC6移植代碼。當我運行新的構建應用程序時,出現此錯誤「R6031嘗試初始化CRT不止一次,這表明您的應用程序存在一個錯誤」。嘗試初始化CRT不止一次
總共有21個dll參與構建這個應用程序。某些DLL在其中包含.c文件並顯式調用DllMain中的_CRT_INIT()。代碼如下:
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;
}
我不知道如何解決這個問題。我是否需要將對_CRT_INIT()的調用註釋掉?
在此先感謝。
MSDN說,該DLL的入口點必須明確在進程附加和進程分離上調用CRT_INIT() – ramrocket 2010-12-13 22:57:36
在15年的Win32編程中,我從未需要在DllMain中顯式初始化CRT。我同意egrunin的回答。 – 2010-12-14 18:17:37