MSVC6からMSVC 2008に切り替える際に、内部コンパイラエラーが発生しています。プログラムのさまざまな部分をコメントアウトして、2行のコードをトレースしました。 2つの異なるCPPファイルこれらのCPPファイルは両方とも正常にコンパイルされますが、エラーが他のファイルに現れているかどうかには何らかの影響があります。VS2008内部コンパイルエラー
これらの行の両方には、いくつかの複雑なネストされたテンプレートがインスタンス化されています。また、抽象クラスをテンプレートパラメータの1つとして使用するアプリ内の唯一の場所でもあるようです。それは、抽象クラスやテンプレートのどちらかが問題になることは確かではありませんが、私が気付いたことは一番明らかです。私はこれらの行が全く重要でないことを確かめることさえできません。ここでは、しかし、彼らはどのように見えるかです:
m_phDSAttributes = new SObjDict<RWCString, SIDataSource>(&RWCString::hash);
だから我々はSObjDict、テンプレート化辞書クラス、SIDataSource、抽象インタフェースを持っている、とパラメータがRWCStringのの静的メンバ関数へのポインタです。
CPPファイルから別のCPPファイルに移動するときにエラーが発生することがあります(たとえば、テンプレート宣言の集合をclass
からtypename
に変更しました)。どんな韻や理由も見つけることができません。
私はこの問題をさらにデバッグする方法については迷っています。コンパイラによる正確なエラー出力(私のソースファイルの名前が変更されている)は以下の通りです。それはインターネット上のどこにも言及されていません。私はどのように進むべきかについてのアドバイスが必要なのでかなり切望しています。私は誰かが "ああ、あなたはただXYZをする必要がある"と言っているとは思っていませんが、この種の問題をデバッグする方法についての指針は非常に高く評価されます。
1>d:\Dev\webapi.cpp : fatal error C1001: An internal error has occurred in the compiler.
1>(compiler file 'f:\dd\vctools\compiler\utc\src\p2\p2symtab.c', line 5905)
あなたはまだMicrosoftに苦情を申し立てましたか?あなたのコードに何らかの問題があっても、バグはコンパイラにあります。そのため、あなたはその権限の範囲内にいます。とにかく、彼らのコンパイラチームは、おそらく問題が何であるかの最良のアイデアを持っています。 –
@David:私たちはまだバグ報告をMSに送っていません。私たちに似た他のバグレポート(p2symtab.cファイルには明らかに多くのバグがあります)を見て、再現スクリプトに付属していないバグレポートは手に入れません。私のバグを単純なreproスクリプトに減らそうとする私の試みは失敗しました。 – rmeador