This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


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)
*****************************



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]