ホーム ATL/WTL
_ATL_MIN_CRTについて
ドキュメント種別 ATL/WTL に関する文書
最終更新日 2004/01/14
PR
 ATL/WTL AppWizard で作成したプロジェクトのリリースビルドでは、 デフォルトで_ATL_MIN_CRTが定義されています。 これは、できる限りCランタイムライブラリを使用しないということを意味します。

_ATL_MIN_CRTを使用すると次のような利点があります。

  • プログラムのファイルサイズが小さくなる
  • ランタイムDLLへの依存度が減る

しかし、同時に次のような制限があります。

  • 一部のCランタイムライブラリ関数が使用できない
  • C++例外処理ができない
  • アプリケーション実行ブロックを別のスコープにしなければならない

三番目の制限は、下の例のように_Moduleを初期化した後、 メッセージループ以降を別のスコープで実行しなければならないということです。 こうしないと、アプリケーション終了後にメモリエラーが起きてしまいます。

// _tWinMain()内
_Module.Init(NULL, hInstance);

int nRet;
{
    CMessageLoop theLoop;
    _Module.AddMessageLoop(&theLoop);

    CMainDlg dlgMain;
    dlgMain.Create(NULL);
    dlgMain.ShowWindow(nCmdShow);

    nRet = theLoop.Run();

    _Module.RemoveMessageLoop();
}
	
_Module.Term();

return nRet;
			

このような制限があるため、本ドキュメントでは_ATL_MIN_CRTを使用しません。 プロジェクトのリリースビルドから_ATL_MIN_CRTを削除するには、 プロジェクトの設定で[設定の対象]から[Win32 Release]を選択し、 [C++]タブの[カテゴリ]から[一般]を選択し、[プリプロセッサの定義]から _ATL_MIN_CRTを削除します。