Sunday, September 04, 2005

MFCバグ:最適化

「MFCでreleaseにすると動きがおかしい」バグ
参考
ref1::@IT:特集:Visual C++ 2005 いままたC++が熱い!「C++/CLI」として大進化したVisual C++ 2005
ref2::MSDN マネージ型と MFC
ref3::後藤さんのHP

既存のMFCコードにマネージコードを挿入する試み(ref1,ref2)を行い、
debugバージョンで見事成功で喜んでいると
releaseバージョンで不自然な動きをし始めた。
まず、デバッグなしで開始(Shift+F5)を行ったが
マウスイベントをまったくキャッチしてくれない。
ついでにデバッグしながら開始(F5)、
動きのあやしいイベントハンドラ(OnLMouseDown等)上のブレークポイントからコマ送りすると
新しく作られるオブジェクトが思っても見ないスタックにはいってる===!
コマ送りを解除すると作ったはずのオブジェクトが見当たらない。
わけが判らないので調べる(ref3)と、最適化されたソースがあやしいらしい。
そこで、プロジェクトのプロパティページで最適化を停止
(『構成プロパティ』⇒『C/C++』⇒『最適化』⇒『最適化』を無効(/Od))
すると、うまく動いた。
MFCはもう使わないほうがいいのか、Microsoftが.NET移行を強引に後押ししてるのか。

これで未練なくManagedに移れそう。

No comments:

Post a Comment