私はLNK2005を取得しています:Visual Studio 2008でプロジェクトをビルドするときに(...)エラーで既に定義されています。私は他の関連する質問を参照しましたが、私が扱っているファイルの数に他のものがなければ、もっと複雑になります。すべての私のヘッダファイルがでガードされている複雑なエラーLNK2005:既に定義済みC++
includes_this_file> - まず
は、私は私が形式[current_file]で、私は私のプロジェクトのファイルを持っているの#include文をマップすることが参考になると思います標準#ifndef [ヘッダー] #define [ヘッダー] ... #endif。変調クラスの
[Modulator.h]
プロトタイプ
[ChorusUnit.h] - > Modulator.h型変調器のメンバオブジェクトを持つコーラスクラスの
プロトタイプ
[AudioHandler.h] - > ChorusUnit.h
Chorusクラスのメンバオブジェクトを持つAudioHandlerクラスのプロトタイプ
[Chorus.cpp] - > AudioHandler.h
モジュレーターのメンバーの定義とコーラスクラス
[AudioHandler.cpp] - のメンバーの> Chorus.cpp
定義AudioHandlerクラス
[ChorusUnit.cpp] - > AudioHandler.cpp
実際のコードを実行するmain()関数を含むファイル私のプロジェクト。
これは、Modulator.h、ChorusUnit.h、AudioHandler.hにあるクラスのすべての関数定義が他のクラスのメンバを参照する必要があるため、すべてのプロトタイプを最初に定義する必要があるためですクラスはお互いに見える。
エラーは、特に、ファイルChorus.objのChorus.cppとAudioHandler.cppにあるすべての単一定義がAudioHandler.objで既に定義されていることを示しています。 また、ChorusUnit.objファイルのChorus.cppとAudioHandler.cppにあるすべての単一定義がAudioHandler.objですでに定義されているという同じエラータイプの別のセットがあります。
おそらくかなり簡単な解決策がありますが、私は一般にリンクする際に特に経験はありません(主にJavaプログラマー)。私の限られた知識がある限り、私はすべてを一度定義しただけです。すべてが一度しか含まれていなかったので、私は個人的にこれらがすでに定義されている理由を犠牲にしています。いくつか私を啓発してください!
私は#include [header]を.cppに入れませんが、まだリンクに問題があります! さらにクラスを持たないファイルのクラスに対してエラーを返します。まだ動作していない新しいソリューションにファイルを移動しようとしましたT_T – Katia