MPI-C++-Includefail
-
Hi,
also ich habe folgendes Problem bezüglich des Compilierens eines C++-Programms mit dem MPI-Compiler
Ich habe eine main.cpp und zwei klassen Master und Slaves beide mit .h und .cpp Dateien.
Zusätzlich wollte ich mir eine Headerdatei schreiben (myMPI.h) in welche ich alle mpi Calls Kapsele und welche mal von Master und Slaves includiert werden soll.Wenn ich aber nun (mit mpi-Calls oder auch ohne) versuche das ganze mit dem mpic++ compiler zu kompilieren wie folgt:
mpic++ -o test SudokuValidator.cpp Master.cpp Slaves.cpp
kommt ein Fehler, dass alle Methoden die in der myMPI.h stehen doppelt:
Slaves.cpp:(.text+0x0): multiple definition of `sendadsWork()' /tmp/cc0nf4rq.o:Master.cpp:(.text+0x0): first defined here /tmp/cc5yOwBk.o: In function `receivasdfeWork()': Slaves.cpp:(.text+0x5): multiple definition of `receivasdfeWork()' /tmp/cc0nf4rq.o:Master.cpp:(.text+0x5): first defined here /tmp/cc5yOwBk.o: In function `sendadsfResult()': Slaves.cpp:(.text+0xa): multiple definition of `sendadsfResult()' /tmp/cc0nf4rq.o:Master.cpp:(.text+0xa): first defined here /tmp/cc5yOwBk.o: In function `receiveadsfResult()': Slaves.cpp:(.text+0xf): multiple definition of `receiveadsfResult()' /tmp/cc0nf4rq.o:Master.cpp:(.text+0xf): first defined here collect2: ld returned 1 exit status
Ich habe hierbei extra die Methodennamen verunstaltet damit nicht woanders ein Konflikt auftreten kann.
Beheben kann ich den Fehler (was mich aber nicht weiterbringt) indem ich die myMPI.h entweder nur in die Master.cpp oder in die Slaves.cpp include oder nur in die Slaves.h includiere
Wenn ich versuche, sie in die Master.h zu packen knallt es sofort.
Die vermeindliche myMPI.h hat aber sogar diesen PreCompiler ifndef schutz:
http://code.pastebin.com/m0rCu9cHder trotzdem ignoriert wird.
Also was mach ich falsch?
Danke für alle Vorschläge!
-
Ich habs gefunden.
NIEMALS FUNKTIONSDEFINITIONEN IN DIE HEADER MACHEN... auch wenn mans mehr oder weniger so von faulen Professoren beigebracht bekommt!