多重定義?

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
remon
記事: 5
登録日時: 5年前

多重定義?

#1

投稿記事 by remon » 5年前

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は一つだけにしないといけないのでしょうか?

一つ一つの段階のソースをそれぞれ残すには別にメモ帳などにコピペして
それをとっておき、ソースファイルの中にはあまり残さないのがよいのでしょうか?


この質問は
デバックなしで開始、や
ビルドがなんちゃらかんちゃら
などの デバック ビルド などについて無知だから出る疑問ですか?

回答お願いします><

アバター
usao
記事: 1547
登録日時: 6年前

Re: 多重定義?

#2

投稿記事 by usao » 5年前

おそらく,複数のcppファイルに WinMain関数が書かれているのではありませんか?

エラーの原因は,タイトルにもされているように多重定義でしょう.
同じ関数がたくさんあるのは困る ということですね.


で,対処としては,
・「各段階」で毎回専用のプロジェクトを作る
のが最もわかりやすいかと思いますが,

一つのプロジェクトの中でずっとやりたいのであれば,
・今コンパイル対象としたいcpp以外をコンパイル対象から外す
という方法があると思います.
ソリューションエクスプローラ上でcppファイルを右クリックしてプロパティを選ぶと
「ビルドから除外」という項目があると思いますのでこれを使います.

別の手段としては,WinMainはとりあえず1個にして,
・「各段階」のWinMainという名前になっている関数をとりあえずそれぞれ別の名前に変えてしまう
というのでも良いかもしれません.
(例えば,今,A.cppとB.cppの2つに WinMain関数が存在しているとしたら,
 それらを例えば,AMainとBMainという名前に変える.
 で,新しいZ.cppを用意して,そこにWinMain関数を用意.
 このWinMain関数は単に AMainかBMainかのいずれかを呼び出す,みたいな形.)

N.R

Re: 多重定義?

#3

投稿記事 by N.R » 5年前

ソリューションエクスプローラーをファイルを管理するエクスプローラーと同じものと考えているようですね。

まず *.cpp というのがソースファイルです。

厳密な事は追々学ぶとして今は
 1つのプログラムを作るのには1つのソリューション、1つのプロジェクト、1つのソースファイルから成る。
と考えた方が理解が早いように思います。

次の段階をサンプルを実行するのには新しいソリューションを作ってください

remon
記事: 5
登録日時: 5年前

Re:Re: 多重定義?

#4

投稿記事 by remon » 5年前

返信ありがとうございます。

usao様
おっしゃるとおり WinMain が両方に書いてありました。
今は「ビルドから除外」を使って進めようかと思います。
慣れてきたら複数のプロジェクトを作ろうと思います!
ここで質問することじゃないかもしれませんが、プロジェクト一式を
新たに作る方法はどうすればよいのでしょうか?

新しくプロジェクトを作る
      ↓
空のプロジェクト
でつくると、ソリューションエクスプローラのところには
何もなくて、ソースファイルやヘッダーファイルといったものが
まったくでないのでどうすればよいのか・・・


N.R様
そのとおりの勘違いをしていました。指摘ありがとうございます。
また一式まったく新し物をつくらないといけないんでね・・・
ありがとうございます。

たいちう
記事: 418
登録日時: 8年前

Re: 多重定義?

#5

投稿記事 by たいちう » 5年前

> そのプロジェクトの中にソースファイルというファイルがあってその中に
> .cppのデータがあります。

「ソースファイル」という名前のフォルダです。


> 何もなくて、ソースファイルやヘッダーファイルといったものが
> まったくでないのでどうすればよいのか・・・

いくつかやり方はありますが、
「ソースファイル」等のフォルダを右クリックして「追加」を選びましょう。

閉鎖

“C言語何でも質問掲示板” へ戻る