環境:VC++ ver.6 Win2000
C言語のソース(VC++やC++の記述なし、ファイルは1つのみ)をDOSモードで
動かしています。
ビルドメニューの「コンパイル」または「ビルド」を実行すると、以下のような
内部コンパイラエラーが出ます。「リビルド」を実行すれば、エラーが出ません。
毎回「リビルド」すれば問題はないと思いますが、内部コンパイラが出る原因を
ご存知でしたらご教示をお願い致します。
<エラーメッセージ>
fatal error C1001: 内部コンパイラ エラー
(コンパイラ ファイル 'E:\***\P2\p2symtab.c', 行番号 968)
ちなみに、ソースファイルはネットワーク接続で他のPCにあります。
また、エラーメッセージで出るコンパイラファイルの場所はEドライブと出ますが、
Eドライブは、DVD/CD-RWドライブで、何もファイルはありません。
まず、MSDNでC1001の説明を読みましたか?
読まれていないならとにかく一度確認された方が良いと思います。
あと、ファイルと行数までわかっているのですから
ソースをさらした方が良いのではと言う気もします。
なんでそんな事を言っているかは、C1001の説明を読めば、
予想できるのではないかと思います。
ドライブ名に関しては良く分からないですね。
ネットワーク越しに他のPC上にあるファイルのビルドってのはやらないので。
プロジェクトのサイズが大した事無いのであれば、プロジェクト毎持ってきた方が
早いし、トラブルも少ないのではと思います。
C1001での「コンパイラファイル」のドライブ、パス、ファイル名、行番号はコンパイ
ラそのもののソースを示して居ると思うので、コンパイラを使う側としては余り気にし
ても意味が無いような気がします。
それと、エラーが出る原因ですが、リビルドで成功してビルドでエラーが出るという
ことは、前回のコンパイル結果を利用するオプションでエラーが出ていると考えら
れるので、プロジェクトの設定から
1、「C/C++」の「カスタマイズ」の「簡易リビルドを行う」
2、「C/C++」の「カスタマイズ」の「インクリメンタル コンパイルを行う」
3、「C/C++」の「プリコンパイル済みヘッダー」を「使用しない」に変更する。
4、「リンク」の「インクリメンタル リンクを行う」
等の、特殊な再利用系のオプションを組み合わせて無効にすれば解決するかも
知れません。
…この辺が悪さして妙なエラー出す事が結構あるので、この辺のオプションには
気をつけたほうがいいと思います。
だからこそリビルドなんていうオプションがツールバーに初めから配置されているの
だと思いますが。
ただ、ネットワーク接続された場所でコンパイルするのはお勧めできないの
で、ローカルに移して作業する事を進薦めます。
それで解決する可能性もありますから。
VC++6 のサービスパックレベルが書いてないので確認する
最新は SP6 なので SP5 以前 (あるいはまったくあたっていないか) なら更新
SP6 でも C1001 が出るならソースコード分割等を実施
最善策は VC++6 を捨てて VS2005 や Orcas に乗り換える
PATIOさん、麩さん
ファイルをローカルに移したら、解決できました。
ありがとうございました。
tetrapodさん
何かのエラーが出た時の参考にさせていただきます。
ありがとうございました。