我正在使用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