none
1プロジェクトのソースファイルに複数のmainプログラムを作成したあとのデバッグ方法を教えてください! RRS feed

  • 質問

  • Visual Studio 2010 Premiumで開発を行っているのですが、1プロジェクトのソースファイルの中に、2つ目のメインプログラムを書いてデバックを開始すると、エラーが出てしまいます。

    エラー内容は、error LNK2005: _main は既に (ファイル名).objで定義されています。

    error LNK1169: 1つ以上の複数回定義されているシンボルが見つかりました。

    という2件です。

    設定方法があると思うのですが、分かりません。

    よろしくお願いします。

    • 編集済み A.Nishi 2011年11月2日 23:10
    2011年11月2日 23:01

回答

  • 「メインプログラム」ということは main 関数を 2 個作ったと言うことですよね?
    どう動くことを期待したのでしょうか。

    main 関数はプログラムの入り口です。
    2 つ以上あったら、どちらを入り口にしたらよいかわかりませんよね?そういう意味でも、エラーになるのは必然です。

    プログラムを別々の exe として作りたいのなら、プロジェクトを分けてください。


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    • 回答の候補に設定 山本春海 2011年11月10日 8:05
    • 回答としてマーク 山本春海 2011年11月15日 8:14
    2011年11月2日 23:46
    モデレータ
  • IDE に頼らずコマンドラインなどから 1 つの c/cpp ファイルだけで完結するようにコンパイルするのであれば、似たようなことはできるとは思います。
    プロジェクトは 1 つの exe/dll/lib を作るために、複数のファイルをまとめるものだと考えていければそんなにずれていないでしょう。
    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    • 回答の候補に設定 山本春海 2011年11月10日 8:05
    • 回答としてマーク 山本春海 2011年11月15日 8:14
    2011年11月3日 10:49
    モデレータ
  • 他の OS というか、GCC などでは1つの Makefile の中に複数のターゲットを指定することができますが、VC++ で使用している Project ファイルには、1つのターゲットしか作成できません(たぶん)。ですから、1つのディレクトリに複数のプロジェクト ファイルを作成すれば、お望みのことはできます。(というのが、Azuleanさんの「IDE に頼らず」)

    たとえば、nmake を使うことで、あなたがおっしゃる「他の OS」と同じことはできます。


    Jitta@わんくま同盟
    • 回答の候補に設定 山本春海 2011年11月10日 8:05
    • 回答としてマーク 山本春海 2011年11月15日 8:14
    2011年11月6日 11:55

すべての返信

  • 「メインプログラム」ということは main 関数を 2 個作ったと言うことですよね?
    どう動くことを期待したのでしょうか。

    main 関数はプログラムの入り口です。
    2 つ以上あったら、どちらを入り口にしたらよいかわかりませんよね?そういう意味でも、エラーになるのは必然です。

    プログラムを別々の exe として作りたいのなら、プロジェクトを分けてください。


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    • 回答の候補に設定 山本春海 2011年11月10日 8:05
    • 回答としてマーク 山本春海 2011年11月15日 8:14
    2011年11月2日 23:46
    モデレータ
  • お世話になります。

    ありがとうございました。

    他のOSを使った経験から、一つのディレクトリの中に複数のmainプログラムをまとめて、保存からコンパイルなどしていたものですから、プロジェクトを分けなくても良いのでは、きっと方法があるはずと思い込んでいました。

    助かりました。

     

    2011年11月3日 5:47
  • IDE に頼らずコマンドラインなどから 1 つの c/cpp ファイルだけで完結するようにコンパイルするのであれば、似たようなことはできるとは思います。
    プロジェクトは 1 つの exe/dll/lib を作るために、複数のファイルをまとめるものだと考えていければそんなにずれていないでしょう。
    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    • 回答の候補に設定 山本春海 2011年11月10日 8:05
    • 回答としてマーク 山本春海 2011年11月15日 8:14
    2011年11月3日 10:49
    モデレータ
  • 他の OS というか、GCC などでは1つの Makefile の中に複数のターゲットを指定することができますが、VC++ で使用している Project ファイルには、1つのターゲットしか作成できません(たぶん)。ですから、1つのディレクトリに複数のプロジェクト ファイルを作成すれば、お望みのことはできます。(というのが、Azuleanさんの「IDE に頼らず」)

    たとえば、nmake を使うことで、あなたがおっしゃる「他の OS」と同じことはできます。


    Jitta@わんくま同盟
    • 回答の候補に設定 山本春海 2011年11月10日 8:05
    • 回答としてマーク 山本春海 2011年11月15日 8:14
    2011年11月6日 11:55