* undefined reference to...
@ 2004-08-20 14:47 Philippe De Neve
2004-08-20 17:32 ` Steven Smith
2004-08-20 17:47 ` Ray Olszewski
0 siblings, 2 replies; 3+ messages in thread
From: Philippe De Neve @ 2004-08-20 14:47 UTC (permalink / raw)
To: linux-newbie
Hi,
I'm new to programming and I'm having a problem I don't understand:
I have 3 very simple files:
1) Integerclass.h containing :
class Integer{
int i;
public:
Integer(int j){
i=j;
}
void change(void);
};
2) Integerclass.cpp containing :
#include "Integerclass.h"
void Integer::change(void){
i=5;
}
3) my_prog.cpp containing
#include "Integerclass.h"
int main(){
Integer P(2);
P.change();
return 0;
};
When I compile the Integerclass.cpp file no errors are returned.
But when I compile and link this :
c++ -o my_prog my_prog.cpp
the output is :
demovideo3:/Projects/little_proggie# c++ -o my_prog my_prog.cpp
/tmp/ccsGvVWq.o: In function `main':
/tmp/ccsGvVWq.o(.text+0x1f): undefined reference to `Integer::change(void)'
collect2: ld returned 1 exit status
demovideo3:/Projects/little_proggie#
I do not understand where I'm making a mistake. I did the same on a windows
machine using VC++ and no errors where returned? Can anyone explain me what
I'm doing wrong? Any help is appreciated!
regards, Philippe.
-
To unsubscribe from this list: send the line "unsubscribe linux-newbie" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.linux-learn.org/faqs
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: undefined reference to... 2004-08-20 14:47 undefined reference to Philippe De Neve @ 2004-08-20 17:32 ` Steven Smith 2004-08-20 17:47 ` Ray Olszewski 1 sibling, 0 replies; 3+ messages in thread From: Steven Smith @ 2004-08-20 17:32 UTC (permalink / raw) To: Philippe De Neve; +Cc: linux-newbie, sos22 [-- Attachment #1: Type: text/plain, Size: 807 bytes --] > 1) Integerclass.h containing : ... > 2) Integerclass.cpp containing : ... > 3) my_prog.cpp containing ... > But when I compile and link this : > > c++ -o my_prog my_prog.cpp That command says to compile my_prog.cpp to an object and use only that object, plus the standard libraries, to build my_prog i.e. ignore Integerclass.cpp completely. There are two obvious solutions: 1) Compile everything at once: c++ -o my_prog my_prog.cpp Integerclass.cpp 2) Compile the source files seperately, and then link them together c++ -c my_prog.cpp c++ -c Integerclass.cpp c++ -o my_prog my_prog.o Integerclass.o Hope that helps. Steven Smith, sos22@cantab.net. -- One day, I'm going to get an Alice-bot to answer all my email for me, and see how long it takes people to notice. [-- Attachment #2: Type: application/pgp-signature, Size: 187 bytes --] ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: undefined reference to... 2004-08-20 14:47 undefined reference to Philippe De Neve 2004-08-20 17:32 ` Steven Smith @ 2004-08-20 17:47 ` Ray Olszewski 1 sibling, 0 replies; 3+ messages in thread From: Ray Olszewski @ 2004-08-20 17:47 UTC (permalink / raw) To: linux-newbie At 04:47 PM 8/20/2004 +0200, Philippe De Neve wrote: >Hi, > >I'm new to programming and I'm having a problem I don't understand: > >I have 3 very simple files: > >1) Integerclass.h containing : > >class Integer{ > int i; >public: > Integer(int j){ > i=j; > } > void change(void); >}; > >2) Integerclass.cpp containing : > > >#include "Integerclass.h" > >void Integer::change(void){ > i=5; >} > >3) my_prog.cpp containing > >#include "Integerclass.h" > >int main(){ > Integer P(2); > P.change(); > return 0; >}; > >When I compile the Integerclass.cpp file no errors are returned. > >But when I compile and link this : > >c++ -o my_prog my_prog.cpp > >the output is : > >demovideo3:/Projects/little_proggie# c++ -o my_prog my_prog.cpp >/tmp/ccsGvVWq.o: In function `main': >/tmp/ccsGvVWq.o(.text+0x1f): undefined reference to `Integer::change(void)' >collect2: ld returned 1 exit status >demovideo3:/Projects/little_proggie# > >I do not understand where I'm making a mistake. I did the same on a windows >machine using VC++ and no errors where returned? Can anyone explain me what >I'm doing wrong? Any help is appreciated! > >regards, Philippe. Since VC++ is GUI based, I doubt you really did the "same" using it. I mention this only because as a beginner, you need too learn the importance of giving exact reports, not impressionistic ones, when asking for help or advice. Your problem is that the way you compile using c++, you do not give the linker (ld, invoked by c++ to link after the compile is done) any information about where to find the intermediate code for Integerclass.cpp. If you run c++ this way instead -- c++ -o my_prog my_prog.cpp Integerclass.cpp -- you should get a successful compile/link. (At least I do here, though when run the program doesn't actually do anything visible, which looks to be consistent with what you've actually coded.) But this is just a quick-and-dirty solution to your immediate problem, not the real answer you need. More generally, what you are missing is the use of "make" to manage multi-file compiles with gcc, c++, and the rest of the Gnu compiler set. I haven't used VC++ in years, but I expect it has an equivalent to make hidden somwehere in the programming environment it offers (I know the Borland C++ compiler suite does; I've used that more than VC++). An e-mail is no place for a tutorial on make, but there are plenty of resources that introduce it and its use. Look around in the usual places. BTW, how did you compile Integerclass.cpp by itself? Since it is not a standalone program, you'd need to use some of the c++ switches to make the compile work (the natural one is "c++ -c Integerclass.cpp"), and that suggests you know more about using c++ than I'd been thinking here. - To unsubscribe from this list: send the line "unsubscribe linux-newbie" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.linux-learn.org/faqs ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2004-08-20 17:47 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2004-08-20 14:47 undefined reference to Philippe De Neve 2004-08-20 17:32 ` Steven Smith 2004-08-20 17:47 ` Ray Olszewski
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.