On Sat, 7 Aug 1999, Oleg Krivosheev wrote: > On Sat, 7 Aug 1999, Micha Feigin wrote: > > Subject: c++ include problem (preprocessor directives) > > > > In my files the headers are included like this: > > #ifdef NEWCPPH > > #include <iostream> > > #else > > #include <iostream.h> > > #endif > > > > #include <cassert> > > #include <cstring> > > #include "input.h" > >
> > only then i get an error that the functions declared inside > > input.h can't be found. The linker says: > > > > main.o: In function `main': > > main.o(.text+0x16): undefined reference to `input(void)' > > main.o(.text+0x8a): undefined reference to `input(char const *)' > > collect2: ld returned 1 exit status > > make: *** [main] Error 1 > > what am i doing wrong? > learn about C++ name mangling > > extern "C" is your friend It appears the functions defined in input.h are not being linked to main. Try compiling input.cpp file (you do have the funtions defined in a separate .cpp file don't you?) with output to an object file, say, input.o, then link with something like this: g++ -o main.o -Wall -pedantic -c main.cpp g++ -o input.o -Wall -pedantic -c input.cpp g++ main.o input.o -o main This will likely fix the linking errors. --David David Teague, [EMAIL PROTECTED] Debian GNU/Linux Because software support is free, timely, useful, technically accurate, and friendly. (I'm hoping this is all of the above!)