- ベストアンサー
ビルド時に
場違いならすみません。 Visual Studio .NET 2003を使って今卒業研究(C++)をしています。 少し前から気になっていることなのですが例えばビルド時に「error LNK2001: 外部シンボル "~~" は未解決です」と出たとします。 そして修正が「ヘッダファイル」の場合、ビルドすると修正は出来ているのに同じエラーが出ます。 リビルドするとエラーはなくなるのですが… これは仕様なのでしょうか? それとも単に私がビルドの仕組みを理解してないだけなのでしょうか。 以前にもプログラムを書いていた時何度修正してビルドしても同じエラーが出るので試しにリビルドするとすんなりうまくいったなんて事もあったのでとても気になっていました。 分かりにくい説明かもしれませんが何か分かる方教えていただけませんか? よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ビルドでは、ブラウザでいうなればキャッシュがきいている状態のときがあります。 リビルドは、キャッシュを無視して更新状態なので、全て再コンパイルすると。 特にソースファイル自体ではなく、ヘッダファイルのみ更新した場合は、ソースファイルは更新されてねーやってことで、ビルドではビルドしなおしてくれなかったりすることがあります。
その他の回答 (2)
- terra5
- ベストアンサー率34% (574/1662)
ヘッダに限るということなら、中間ファイルは .pch プリコンパイルヘッダ が原因かな。 私もVC6で似たようなことがあって、その時はpchを作らないように変更してしまいました。 通常問題ないんですが。 コンパイルが遅くなりますが、マシンの速度とか作るプログラムのサイズによりますから。 余程大きなプログラムサイズでないと気にならないでしょう。 そのわずかな時間より不可解な動作の方が余程気になりますし。 原因はわかりません。Microsoftだしと諦めてます(^^; 後はファイルの修正とコンパイルのマシンが違ったり、 なんらかの理由で時間が狂っていたりすると、 修正したファイルの方が古いということになって コンパイルされないとか、毎回コンパイルされるとかありますね。
お礼
アドバイスありがとうございます。 そんなに大きなプログラムでもないのでその方法も一度試してみたいと思います。 少し前は私もVC6を使っていたのですがあの時に比べ細かい事でもコンパイルエラー出るようになったり時々謎な動作がある時あります。(このマシンが古いのもありますが)
- Yukichan110
- ベストアンサー率20% (23/113)
中間ファイル(こういう言い方をしているのですが・・・実際は・・・??)ができ、 ファイルのリンク情報ファイルなどができます。 ビルドは、それを元にして、構成し直すのに対し、 リビルドは、その中間ファイルを削除し、もう一度中間ファイルを作り直すという感じになります。 なので、プログラムのかなりの修正をした場合は、 リビルドをしています。
お礼
アドバイスありがとうございます。 そうですね、これからは修正が多かったり新しい機能を追加する時はリビルドするようにしていこうと思います。
お礼
アドバイスありがとうございます。 リビルドした時「中間ファイルを削除しています」みたいのが出ますがあれがブラウザでいうキャッシュを削除してるみたいな感じですね。