- 締切済み
C++のファイルの分割について教えてください。
分割したプログラムの書き方を練習中なのですが、 下のようなプログラムを書いて、ビルドしようとしたら失敗します。 どこが悪いのか、教えていただけないでしょうか? (5)\test30\Debug\test30.exe : fatal error LNK1120: 外部参照 1 が未解決です。 1>test30 - エラー 2、警告 0 ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ========== //test30.cpp #include <iostream> #include "sub.h" int main(void) { std::cout<<"メインプログラムです。"<<std::endl; sub1(); sub2(); return 0; } ------------------------------------------------------------- //sub1.cpp #include <iostream> void sub1(void) { std::cout<<"サブ1です。"<<std::endl; } ------------------------------------------------------------- //sub2.cpp #include <iostream> void sub1(void) { std::cout<<"サブ2です。"<<std::endl; } --------------------------------------------------------------- //sub.h void sub1(void); void sub2(void);
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- infeeld
- ベストアンサー率37% (3/8)
test30.cppのみがコンパイルされ、sub1.cppとsub2.cppがコンパイルされていないようです。 test30.cppは、sub.hによって関数が宣言されているので、sub1、sub2の関数がとりあえずあるという前提でコンパイルされます。 コンパイルが終わったら、リンクにてとりあえずで先延ばしにしていた問題を解決するため、sub1の呼び出し部分を実際のsub1とを紐付けようとします。 しかし、肝心のsub1の関数が見つからずエラーとなった。 と推測します。 sub2も同様です。 sub1.cppとsub2.cppがコンパイル対象になっているかをご確認ください。
- BLK314
- ベストアンサー率55% (84/152)
VS2008 proで実験しましたが(ファイル名も全部そのまま)、 特に問題ありませんでした。ビルドできました。 基本的なことですが プロジェクトのソースファイルに にsub1.cpp,sub2.cpp,test30.cppは全部含まれていますか?
補足
はい。ソースファイルのフォルダにsub1.cpp,sub2.cpp,test30.cpp ヘッダフォルダには、sub.hと分けていれてあります。
それが間違いなくソースと同じなら「どっちもsub1じゃん」でファイナルアンサー
補足
sub2.cppのところは書き間違いました。 今、確認してビルドして見ましたが、同じエラーがでます。
補足
Visual C++ 2008 Express Editionの無料のダウンロード版使ってるのですが、最初の新規ファイルを作っていくウィザードで、アプリケーションの設定をWindowsアプリケーションにしていために、駄目だったようです。 コンソールアプリケーションでやり直してみたら、うまくいきました。 皆さん、ご迷惑おかけしました。