In function `main':: undefined reference to ...

Sriharsha sriharsha.v@redpinesignals.com
Tue Jan 18 08:59:00 GMT 2005


OOps,

add this to your base.c

Base::Base(){     }  // This defines your default constructor.



Graf LĂĄszlĂł wrote:

> I did all what you said Sriharsha.
> Whit file names changed, Makefile modified
> I get the same message:
>
> 1. step:   rm *.o
>
> 2. step:   g++ -c base.cpp -o base.o
>
> 3. step:   g++ axf.cpp base.o -o axf.o
>
>            /tmp/ccGshWGj.o(.text+0x4a): In function `main':
>            : undefined reference to `Base::Base[in-charge]()'
>
>            collect2: ld returned 1 exit status
>
>
> Sriharsha wrote:
>
>> Hi Laszlo,
>>      firstly, I suggest that you change the extension of your code 
>> files from .c to .cpp.
>>
>> then, in your make file: Change:
>> g++ axf.c -o axf.o
>> to
>> g++ axf.cpp base.o -o axf.o
>>
>> Harsha.
>>
>> Graf LĂĄszlĂł wrote:
>>
>>> Hi Gurus,
>>>
>>> I am Laszlo from Hungary.
>>> Please, take a look at these files:
>>>
>>> --- The main file 
>>> ---------------------------------------------------------------------
>>>     #include "stdio.h"
>>>     #include "stdlib.h"
>>>     #include "string.h"
>>>     #include "base.h"
>>>         int main(int argc, char* argv[])
>>>     {
>>>         system("clear");
>>>         Base* b = new Base();
>>>         printf("\n---------- %s ---------------\n", b->toString());
>>>         delete b;
>>>         return 0;
>>>     }//main
>>>
>>> --- The base.h file 
>>> ---------------------------------------------------------------------
>>>     #ifndef __BASE
>>>         #define __BASE
>>>         class Base{
>>>             private:
>>>                 char* _str;
>>>
>>>             public:
>>>                 Base();
>>>                 Base(Base &);
>>>                 ~Base();
>>>
>>>                 char* toString();
>>>                 char* toHtml();
>>>         };
>>>     #endif
>>>
>>> --- The base.c file 
>>> ---------------------------------------------------------------------
>>>     #include "base.h"
>>>     using namespace std;
>>>
>>>     Base::Base(Base &s){
>>>     }
>>>
>>>     Base::~Base(){
>>>     }
>>>
>>>     char* Base::toString()
>>>     {
>>>         char* rv = "this is the toString()";
>>>         return rv;
>>>     }
>>>
>>>     char* Base::toHtml()
>>>     {
>>>         char* rv = "this is the toHtml()";
>>>         return rv;
>>>     }
>>>
>>> --- The Makefile file 
>>> ---------------------------------------------------------------------
>>>     compile :
>>>         g++ -c base.c -o base.o
>>>         g++ axf.c -o axf.o
>>>         clear :
>>>         clear
>>>            clean :
>>>         rm *.o
>>>         run :
>>>         ./axf.o
>>>
>>> -------------------------------------------------------------------------------------------- 
>>>
>>> After the command
>>>        make clear clean compile run
>>>
>>> I got these error messages:
>>>
>>>     rm *.o
>>>     g++ -c base.c -o base.o
>>>     g++ axf.c -o axf.o
>>>
>>>     /tmp/cc2K7HjB.o(.text+0x4a): In function `main':
>>>     : undefined reference to `Base::Base[in-charge]()'
>>>
>>>     /tmp/cc2K7HjB.o(.text+0x88): In function `main':
>>>     : undefined reference to `Base::toString()'
>>>         /tmp/cc2K7HjB.o(.text+0xaf): In function `main':
>>>     : undefined reference to `Base::~Base [in-charge]()'
>>>     collect2: ld returned 1 exit status
>>>
>>>     make: *** [compile] Error 1
>>>
>>> Could somebody tell me what is wrong there?
>>> Thank you.
>>
>>
>>
>>
>

-- 
 *****************************
 * Sriharsha Vedurmudi			
 * Software Engineer		
 * 
 * Redpine Signals Inc.	
 * Gate #395, Plot 87,88			
 * Sagar Society, Road #2, 
 * Banjara Hills,		
 * Hyderabad - 500 034			
 * www.redpinesignals.com	
 *							
 * +91-40-23559911  (Office)
 * +91-98491-33133  (Mobile)
 *****************************



More information about the Gcc-help mailing list