c++での初歩的な質問です。
visual studioを開いてプログラムを学んでいたのですが
ソリューションエクスプローラー
という欄のところに
プロジェクトが一つあります。
そのプロジェクトの中にソースファイルというファイルがあってその中に
.cppのデータがあります。
そのデータが二つあるとき
AAA1.cpp
BBB2.cpp
のように二つあるときにコンパイル?(デバックなしで開始)をすると
エラー 1 error LNK2005: _WinMain@16 は既に Load2.obj で定義されています。 C:\Users\user\Desktop\GameProg_2012
\GameProg_2012\test.obj GameProg_2012
このようなエラーが出てきます。
二つある.cppのうち一つをクリアしたらエラーが出ないで、できました。
私は、一つ一つ段階を踏んで学ぶサイトを見ていて
その一つ一つの段階のソースをそれぞれ残して進んでいきたいのですが、
ソースファイルの中には.cppは一つだけにしないといけないのでしょうか?
一つ一つの段階のソースをそれぞれ残すには別にメモ帳などにコピペして
それをとっておき、ソースファイルの中にはあまり残さないのがよいのでしょうか?
この質問は
デバックなしで開始、や
ビルドがなんちゃらかんちゃら
などの デバック ビルド などについて無知だから出る疑問ですか?
回答お願いします><
多重定義?
Re: 多重定義?
おそらく,複数のcppファイルに WinMain関数が書かれているのではありませんか?
エラーの原因は,タイトルにもされているように多重定義でしょう.
同じ関数がたくさんあるのは困る ということですね.
で,対処としては,
・「各段階」で毎回専用のプロジェクトを作る
のが最もわかりやすいかと思いますが,
一つのプロジェクトの中でずっとやりたいのであれば,
・今コンパイル対象としたいcpp以外をコンパイル対象から外す
という方法があると思います.
ソリューションエクスプローラ上でcppファイルを右クリックしてプロパティを選ぶと
「ビルドから除外」という項目があると思いますのでこれを使います.
別の手段としては,WinMainはとりあえず1個にして,
・「各段階」のWinMainという名前になっている関数をとりあえずそれぞれ別の名前に変えてしまう
というのでも良いかもしれません.
(例えば,今,A.cppとB.cppの2つに WinMain関数が存在しているとしたら,
それらを例えば,AMainとBMainという名前に変える.
で,新しいZ.cppを用意して,そこにWinMain関数を用意.
このWinMain関数は単に AMainかBMainかのいずれかを呼び出す,みたいな形.)
エラーの原因は,タイトルにもされているように多重定義でしょう.
同じ関数がたくさんあるのは困る ということですね.
で,対処としては,
・「各段階」で毎回専用のプロジェクトを作る
のが最もわかりやすいかと思いますが,
一つのプロジェクトの中でずっとやりたいのであれば,
・今コンパイル対象としたいcpp以外をコンパイル対象から外す
という方法があると思います.
ソリューションエクスプローラ上でcppファイルを右クリックしてプロパティを選ぶと
「ビルドから除外」という項目があると思いますのでこれを使います.
別の手段としては,WinMainはとりあえず1個にして,
・「各段階」のWinMainという名前になっている関数をとりあえずそれぞれ別の名前に変えてしまう
というのでも良いかもしれません.
(例えば,今,A.cppとB.cppの2つに WinMain関数が存在しているとしたら,
それらを例えば,AMainとBMainという名前に変える.
で,新しいZ.cppを用意して,そこにWinMain関数を用意.
このWinMain関数は単に AMainかBMainかのいずれかを呼び出す,みたいな形.)
Re:Re: 多重定義?
返信ありがとうございます。
usao様
おっしゃるとおり WinMain が両方に書いてありました。
今は「ビルドから除外」を使って進めようかと思います。
慣れてきたら複数のプロジェクトを作ろうと思います!
ここで質問することじゃないかもしれませんが、プロジェクト一式を
新たに作る方法はどうすればよいのでしょうか?
新しくプロジェクトを作る
↓
空のプロジェクト
でつくると、ソリューションエクスプローラのところには
何もなくて、ソースファイルやヘッダーファイルといったものが
まったくでないのでどうすればよいのか・・・
N.R様
そのとおりの勘違いをしていました。指摘ありがとうございます。
また一式まったく新し物をつくらないといけないんでね・・・
ありがとうございます。
usao様
おっしゃるとおり WinMain が両方に書いてありました。
今は「ビルドから除外」を使って進めようかと思います。
慣れてきたら複数のプロジェクトを作ろうと思います!
ここで質問することじゃないかもしれませんが、プロジェクト一式を
新たに作る方法はどうすればよいのでしょうか?
新しくプロジェクトを作る
↓
空のプロジェクト
でつくると、ソリューションエクスプローラのところには
何もなくて、ソースファイルやヘッダーファイルといったものが
まったくでないのでどうすればよいのか・・・
N.R様
そのとおりの勘違いをしていました。指摘ありがとうございます。
また一式まったく新し物をつくらないといけないんでね・・・
ありがとうございます。