私はVC200からポートコードにVS2008を使用しています。新しいビルドアプリを実行したときに、このエラー「R6031 AttempがCRTを2回以上初期化しようとしました。これはアプリケーションのバグを示しています」CRTを複数回初期化しようとしました
この1つのアプリケーションをビルドするには合計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
15年間のWin32プログラミングでは、DllMainで明示的にCRTを初期化する必要は一度もありませんでした。私はegruninの答えに同意します。 –