2017-04-13 7 views
0

私はより大きなプロジェクトを作成しています。クラスが正しく機能するかどうかをテストするために、3つまたは4つのメイン関数のシナリオが必要です。私はこのC++の主な機能のシナリオをあまり作成しない

#define TEST2 //INTERACTIVE OR TEST1 OR TEST2 OR TEST3 

#include <iostream> 

#ifdef INTERACTIVE 
#include "interactive.cpp" 
#endif 
#ifdef TEST1 
#include "test1.cpp" 
#endif 
#ifdef TEST2 
#include "test2.cpp" 
#endif 
#ifdef TEST3 
#include "test3.cpp" 
#endif 

ようmain.cppにファイルを作成し、このテストファイルのすべての内部でそれが動作するはずです私の意見では、この

#include <iostream> 

int main() { 
    //Code here 
    return 0; 
} 

のようなものですが、私はプロジェクトをビルドするとき、私は、リンカを持っていますエラー:

duplicate symbol _main in: 
    CMakeFiles/Project.dir/main.cpp.o 
    CMakeFiles/Project.dir/test2.cpp.o 
ld: 1 duplicate symbol for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 
make[3]: *** [Project] Error 1 
make[2]: *** [CMakeFiles/Project.dir/all] Error 2 
make[1]: *** [CMakeFiles/Project.dir/rule] Error 2 
make: *** [Project] Error 2 

何が問題なのですか。

+0

プロジェクトをどのように構築していますか? IDEのセットアップに問題がある可能性があります。それぞれの 'main'は異なる" target "に関連していなければなりませんので、あなたのコードは' main'sの束で構築されません。 –

答えて

2

ここで問題になるのは、あなたがインクルードするcppファイルをまだコンパイルしていることです。main.cppをビルドしたいだけで、ソリューションにビルドされていないものをすべて削除する必要があります。そうしないと、両方のcppファイルが同じシンボルを持つようにコンパイルされ、重複するシンボルエラーが発生します。

+0

そうです、それらのファイルを構築せずに完全に動作します:D – emil

+0

@emil喜んで助けてください。 – NathanOliver

関連する問題