• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:質問です)

C言語のコンパイルエラーについて解決方法を教えてください

このQ&Aのポイント
  • C言語のコンパイラであるvisual C++を使用している場合、1つのソースファイルに複数の.cファイルを作成するとビルドエラーが発生することがあります。エラーメッセージには複数回定義されたシンボルが見つかったという内容が含まれます。
  • 一部の解決策として、プロジェクトのプロパティで生成コードの設定を変更する方法があります。具体的には、プロジェクトのプロパティ→C言語のプロパティ→生成コード→DLLといった手順で設定を変更することができます。しかし、これによって必ずしも問題が解決するわけではありません。
  • コンパイルエラーが解決しない場合は、ソースファイルの依存関係や宣言の重複などを確認する必要があります。また、ビルドログを確認することで詳細なエラー情報が得られる場合もあります。問題が解決しない場合は、コンパイラのバージョンや設定、ソースコード自体の修正などを検討する必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.2

>1つの実行ファイル中にmain()は1つしか存在できません。 と書きましたが…main()だけとは限りませんので注意。 プロジェクトのソースが main.c/source1.c/source2.cとあって、 それぞれにfunc()という関数を定義した場合、衝突してリンクできなくなる場合があります。 # クラスに分けていて名前空間が衝突していないとかstaticでファイル内スコープに限定するとかであれば衝突しなくて済みますが…。 # そのあたりはもっと詳しい方からの回答に期待…。

その他の回答 (1)

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.1

1つの実行ファイル中にmain()は1つしか存在できません。 別々のプロジェクトを作成して、別々のexeファイルになるようにしてください。 よって… >プロジェクト→C言語のプロパティ→生成コード→DLL >で回避されると書いてあったんですがいくらその設定にしても何の問題も解決されません。 こんなのでは回避できません。 http://www.google.co.jp/search?hl=ja&num=30&q=%22error+LNK2005%3A+_main+%E3%81%AF%E6%97%A2%E3%81%AB%22&btnG=%E6%A4%9C%E7%B4%A2&lr=lang_ja 複数のソースファイルに分割して、分割コンパイルを行うのであればリンク時に >1>sample2.obj : error LNK2005: _main は既に sample.obj で定義されています。 なんてのは出ません。 # ソリューションの設定なども絡んだりするので…ソリューションごと新しく作る。という方が気楽かも知れません。 # スタートアッププロジェクトとか……。 分割コンパイルについてはこちら。 http://www.google.co.jp/search?hl=ja&num=30&q=%E5%88%86%E5%89%B2%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%AB+%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88&btnG=%E6%A4%9C%E7%B4%A2&lr=lang_ja