- ベストアンサー
VC++ 2010 Expressを使ったC++のビルドについて
- VC++2010 Expressを使ってC++を書いている際に、クラスファイルの配置方法についての問題があります。
- 現在、クラスファイルをエントリーポイントの上に記述して使っているが、クラスの数が増えてきたため、ソースファイルフォルダの下に置くように変更しました。
- しかし、ビルドする際にエラーが発生し、正しくビルドできません。VC++ 2010 Expressの使い方について詳しい方の教示をお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
結局エラーの内容は秘密ですか? 私の推測通りのエラーであれば、プロジェクトからインクルードしているファイル(point.cpp、canvas.cppなど)を削除してください。 .cppファイルがプロジェクトに存在すると、VCはコンパイル・リンクしようとします。list12.cpp内でインクルードした内容と同内容が別ファイルのコンパイルで出来上がるため、重複が起こります。
その他の回答 (1)
- m-take0220
- ベストアンサー率61% (480/785)
どんなエラーが出てるのかわからないので、推測になりますが。 (あなたが作ったプログラムを他人が使ったとして、「エラーが出てる」だけでは原因はわからないですよね。) .cppファイルをインクルードしているのですが、クラスの実装部分が.cppファイルに記述されているのですよね。 そうであれば、例えばpoint.cppの内容はpoint.cppのコンパイル時とメイン部分のコンパイル時の2回出てくるため、リンク時に重複しているとなるんじゃないでしょうか。
補足
ソースファイルが置いてあるディレクトリから、コマンドプロンプトで、(list12.cppはエントリポイントのファイル名です。) >cl /EHsc list12.cpp /link /DEBUG /OUT:"..\Debug\list12.exe" を実行すると所望の実行ファイルがビルドできます。 これと同じ操作を、Expressのメニューを使ってう方法がよく分からないのです。 メニューの「ツール」->「設定」->「上級者用の設定」にして使っているのですが、 メニューの「ビルド」で「list12のビルド」または「ソリューションのビルド」を選んでビルドしても 同じようにエラーをはいてしまいます。おっしゃられているようにインクルードしている個別のファイルをコンパイルしている時にエラーをはいています。上記コマンドプロンプトの記述通りに、個別のファイルをコンパイルしないようにする設定方法が分かりかねています。
補足
情報ありがとうございます。 一応、以下の2通りの仕方でできました。 (1)list12.cppのインクルードの内容を、#include "point.h"のようにインクルードファイルに 換えて、クラスの記述をヘッダーファイルに上記の名前のファイルとして記述する。最後に、ソル―ションビルドを実行する。 (2)今まで通り、#include "point.cpp"の記述でcppファイルをソースファイル下に置く。この状態でlist12.cppを右クリック->「コンパイル」を実行。その後、list12.cpp以外のファイルを右クリック->「プロジェクトから除外」を実行。最後に、ソル―ションビルドを実行する。(除外したファイルはソースファイルの記述からは消えますが、フォルダの中にはまだ残っていて、「ソル―ションエクスプローラ」の「すべてのファイルを表示」をクリックすると表示されるようです。 皆さん、どのように使っているかよく分からないので、上記(1)、(2)以外にも良い使い方があれば教えてください。