LNK1169 1 つ以上の複数回定義されているシンボルが見つかってしまう
Re: LNK1169 1 つ以上の複数回定義されているシンボルが見つかってしまう
そういうエラーは出そうもないコードですけどね。
エラーメッセージの全文を貼っていただけますか?
エラーメッセージの全文を貼っていただけますか?
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
Re: LNK1169 1 つ以上の複数回定義されているシンボルが見つかってしまう
独立したプログラムは、別のプロジェクトにしなければいけません。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: LNK1169 1 つ以上の複数回定義されているシンボルが見つかってしまう
返信ありがとうございます。
もう一度試してみたんですが、ビルドはできました
1>------ ビルド開始: プロジェクト:ConsoleApplication2, 構成:Debug Win32 ------
1> ConsoleApplication2.vcxproj -> c:\users\yu03k\onedrive\ドキュメント\visual studio 2015\Projects\ConsoleApplication2\Debug\ConsoleApplication2.exe
========== ビルド: 1 正常終了、0 失敗、0 更新不要、0 スキップ ==========
その後デバックなしで開始してから、コマンドプロンプトで「Hello、World続行するには何かキーを押してください...」と出てくるんですが、コンパイルすると必ずコマンドプロンプトに「続行するには何かキーを押してください...」と出てくるんでしょうか?
すみません、エラー画面を載せたいんですが添付のしかたが分かりません。
もう一度試してみたんですが、ビルドはできました
1>------ ビルド開始: プロジェクト:ConsoleApplication2, 構成:Debug Win32 ------
1> ConsoleApplication2.vcxproj -> c:\users\yu03k\onedrive\ドキュメント\visual studio 2015\Projects\ConsoleApplication2\Debug\ConsoleApplication2.exe
========== ビルド: 1 正常終了、0 失敗、0 更新不要、0 スキップ ==========
その後デバックなしで開始してから、コマンドプロンプトで「Hello、World続行するには何かキーを押してください...」と出てくるんですが、コンパイルすると必ずコマンドプロンプトに「続行するには何かキーを押してください...」と出てくるんでしょうか?
すみません、エラー画面を載せたいんですが添付のしかたが分かりません。
Re: LNK1169 1 つ以上の複数回定義されているシンボルが見つかってしまう
別のコードで試してみましたが、最初に投稿したコードと同じようにビルドできませんでした。
エラーは2つ出ました。
重大度レベル コード 説明 プロジェクト ファイル 行 ソース 抑制状態
エラー LNK1169 1 つ以上の複数回定義されているシンボルが見つかりました。 ConsoleApplication2 c:\users\yu03k\onedrive\ドキュメント\visual studio 2015\Projects\ConsoleApplication2\Debug\ConsoleApplication2.exe 1 ビルド
重大度レベル コード 説明 プロジェクト ファイル 行 ソース 抑制状態
エラー LNK2005 _main は既に Source3.obj で定義されています。 ConsoleApplication2 c:\Users\yu03k\OneDrive\ドキュメント\visual studio 2015\Projects\ConsoleApplication2\ConsoleApplication2\Source.obj 1 ビルド
エラーは2つ出ました。
重大度レベル コード 説明 プロジェクト ファイル 行 ソース 抑制状態
エラー LNK1169 1 つ以上の複数回定義されているシンボルが見つかりました。 ConsoleApplication2 c:\users\yu03k\onedrive\ドキュメント\visual studio 2015\Projects\ConsoleApplication2\Debug\ConsoleApplication2.exe 1 ビルド
重大度レベル コード 説明 プロジェクト ファイル 行 ソース 抑制状態
エラー LNK2005 _main は既に Source3.obj で定義されています。 ConsoleApplication2 c:\Users\yu03k\OneDrive\ドキュメント\visual studio 2015\Projects\ConsoleApplication2\ConsoleApplication2\Source.obj 1 ビルド
Re: LNK1169 1 つ以上の複数回定義されているシンボルが見つかってしまう
1つのプロジェクトに複数のソースファイルを登録していて、そのうち2つ以上のファイルにmain関数を含んでいる、kame さんが書きました:別のコードで試してみましたが、最初に投稿したコードと同じようにビルドできませんでした。
エラーは2つ出ました。
というようなことはありませんか?
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
Re: LNK1169 1 つ以上の複数回定義されているシンボルが見つかってしまう
boxさん返信ありがとうございます。box さんが書きました:1つのプロジェクトに複数のソースファイルを登録していて、そのうち2つ以上のファイルにmain関数を含んでいる、kame さんが書きました:別のコードで試してみましたが、最初に投稿したコードと同じようにビルドできませんでした。
エラーは2つ出ました。
というようなことはありませんか?
一つのプロジェクト内に複数のソースファイルを登録する方法はあるんでしょうか?
Re: LNK1169 1 つ以上の複数回定義されているシンボルが見つかってしまう
あります。kame さんが書きました:一つのプロジェクト内に複数のソースファイルを登録する方法はあるんでしょうか?
龍神録プログラミングの館のサンプルコードでも使われています。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: LNK1169 1 つ以上の複数回定義されているシンボルが見つかってしまう
みけCATさん返信ありがとうございます。みけCAT さんが書きました:あります。kame さんが書きました:一つのプロジェクト内に複数のソースファイルを登録する方法はあるんでしょうか?
龍神録プログラミングの館のサンプルコードでも使われています。
もしよろしければ、一つのプロジェクト内に複数のソースファイルを登録する方法を教えて頂けますか?
Re: LNK1169 1 つ以上の複数回定義されているシンボルが見つかってしまう
登録する方法じゃなくて、登録を解除する方法が知りたいのではありませんか?kame さんが書きました:みけCAT さんが書きました:kame さんが書きました: もしよろしければ、一つのプロジェクト内に複数のソースファイルを登録する方法を教えて頂けますか?
No.5 のエラーメッセージの意味が分かりませんか?
LNK1169 のほうは、シンボル、すなわち関数名か変数名が複数回定義されているから
実行ファイル ConsoleApplication2.exe が作れませんでした、ということ。
LNK2005 のほうは、main という名前は、Source3.obj で定義されています。
すなわち、Source3.c (または Source3.cpp)で定義されています。
ところが、Source2.obj を Souorce3.obj とリンクしようとしたら、Source2.obj
にも main という名前が定義されていました。ということ。
ConsoleApplication2 というプロジェクトには
Source2.c と Source3.c のファイルが登録されている、ということ。
両方に main があると言っているのです。
Visual Studio を使っているのなら、ソリューションエクスプローラに
プロジェクトが表示されていて、その下にソースファイルが見つかるはずです。
要らないほうのソースプログラムを右クリックして「クリア」してみては?
Re: LNK1169 1 つ以上の複数回定義されているシンボルが見つかってしまう
[/quote]
登録する方法じゃなくて、登録を解除する方法が知りたいのではありませんか?
No.5 のエラーメッセージの意味が分かりませんか?
LNK1169 のほうは、シンボル、すなわち関数名か変数名が複数回定義されているから
実行ファイル ConsoleApplication2.exe が作れませんでした、ということ。
LNK2005 のほうは、main という名前は、Source3.obj で定義されています。
すなわち、Source3.c (または Source3.cpp)で定義されています。
ところが、Source2.obj を Souorce3.obj とリンクしようとしたら、Source2.obj
にも main という名前が定義されていました。ということ。
ConsoleApplication2 というプロジェクトには
Source2.c と Source3.c のファイルが登録されている、ということ。
両方に main があると言っているのです。
Visual Studio を使っているのなら、ソリューションエクスプローラに
プロジェクトが表示されていて、その下にソースファイルが見つかるはずです。
要らないほうのソースプログラムを右クリックして「クリア」してみては?[/quote]
かずまさん返信ありがとうございます。
基本的に同一のプロジェクトにはmain関数は複数置けないということでしょうか。
登録する方法じゃなくて、登録を解除する方法が知りたいのではありませんか?
No.5 のエラーメッセージの意味が分かりませんか?
LNK1169 のほうは、シンボル、すなわち関数名か変数名が複数回定義されているから
実行ファイル ConsoleApplication2.exe が作れませんでした、ということ。
LNK2005 のほうは、main という名前は、Source3.obj で定義されています。
すなわち、Source3.c (または Source3.cpp)で定義されています。
ところが、Source2.obj を Souorce3.obj とリンクしようとしたら、Source2.obj
にも main という名前が定義されていました。ということ。
ConsoleApplication2 というプロジェクトには
Source2.c と Source3.c のファイルが登録されている、ということ。
両方に main があると言っているのです。
Visual Studio を使っているのなら、ソリューションエクスプローラに
プロジェクトが表示されていて、その下にソースファイルが見つかるはずです。
要らないほうのソースプログラムを右クリックして「クリア」してみては?[/quote]
かずまさん返信ありがとうございます。
基本的に同一のプロジェクトにはmain関数は複数置けないということでしょうか。
Re: LNK1169 1 つ以上の複数回定義されているシンボルが見つかってしまう
基本的にじゃなくて、コンソールアプリケーション(main関数が基点となるプログラム)をkame さんが書きました: 基本的に同一のプロジェクトにはmain関数は複数置けないということでしょうか。
作成する場合、1つのプロジェクトにmain関数は「絶対に1個だけ」でなければなりません。
1つのプロジェクトにいくつのソースファイルがあってもかまいませんが、それらの中の
「どれか1個だけ」にmain関数が「1個だけ」入っているファイルが必要である、ということです。
main関数は0個でも2個でも3個でもダメです。1個だけ。
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。
プログラムは思ったとおりには動かない。書いたとおりに動く。
Re: LNK1169 1 つ以上の複数回定義されているシンボルが見つかってしまう
正確には「グローバルスコープにmain関数はちょうど1個」ですね。box さんが書きました:基本的にじゃなくて、コンソールアプリケーション(main関数が基点となるプログラム)を
作成する場合、1つのプロジェクトにmain関数は「絶対に1個だけ」でなければなりません。
#include <iostream>
namespace hoge {
int main(void) {
std::cout << "hoge::main" << std::endl;
return 0;
}
}
int main(void) {
std::cout << "global main" << std::endl;
hoge::main();
return 0;
}
オフトピック
グローバルでint型の引数が3個のmain関数も作ったら、main関数はオーバーロードできないって言われました。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: LNK1169 1 つ以上の複数回定義されているシンボルが見つかってしまう
関数名が重複しなきゃ良いので、その時動かしたいmain以外はmainX1とかに変えてしまう手もありますよ。あちゃーな方法ですけど。
あとグローバル変数とかも名前重複するとNGです。
まぁ、普通はプロジェクト分けるか、プロジェクトを諦めてコマンドラインで手打ちでコンパイルにします。
あとグローバル変数とかも名前重複するとNGです。
まぁ、普通はプロジェクト分けるか、プロジェクトを諦めてコマンドラインで手打ちでコンパイルにします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。