HELP! : "multiply defined" error

Emmanuel Lambert Emmanuel.Lambert@advalvas.be
Mon Nov 15 03:26:00 GMT 1999


Hi again

When I try to compile a program with g++, I always get "multiply defined"
errors in the final stage.
I
n this small trial program, I have 3 files :

--------------------myclass.h-----------------------------------
#ifndef myclass_h
#define myclass_h 1

#include <iostream>

class myclass
{
  public:
     myclass();
     ~myclass();
     myclass(char* naam);

     void do_it();

  protected:

  private:
     char* _name;
};

#endif
----------------------------------------------------------------------

------------------------myclass.cpp--------------------------------
#include "myclass.h"

myclass::myclass()
{
}

myclass::~myclass()
{
}

myclass::myclass(char* name)
{
 _name = name;
}

void myclass::do_it()
{
 cout << _name << "\n";
}
----------------------------------------------------------------------


--------------------prog.cpp----------------------------------------
#include <iostream>
#include "myclass.cpp"

main ()
{
 myclass* a = new myclass("Manu");
 a->do_it();
 delete a;
 cout << "done\n";
}
----------------------------------------------------------------------

Compiling these files SEPERATELY works just fine :

g++ -c myclass.cpp
g++ -c prog.cpp

Now I have 2 .o files : myclass.o and prog.o

So, what I do now is this :

g++ -o prog prog.o myclass.o

Right ?
BUT THIS DOES NOT WORK!
Here is my screen output :

----------------------------------------------------------------------------
----
archytas> g++ -o prog prog.o myclass.o
ld: fatal: symbol `myclass::do_it(void)' is multiply defined:
        (file prog.o and file myclass.o);
ld: fatal: symbol `myclass::myclass(void)' is multiply defined:
        (file prog.o and file myclass.o);
ld: fatal: symbol `myclass::~myclass(void)' is multiply defined:
        (file prog.o and file myclass.o);
ld: fatal: symbol `myclass::myclass(char *)' is multiply defined:
        (file prog.o and file myclass.o);
ld: fatal: File processing errors. No output written to prog
collect2: ld returned 1 exit status
archytas>
----------------------------------------------------------------------------
----

This drives me crazy! What can I do about it.
I am unable to find any information about this weird "multiply defined"
error on the Internet.

Thank you in advance for your help.

Emmanuel Lambert









More information about the Gcc-help mailing list