From: Thomas Demmer Newsgroups: comp.os.msdos.djgpp Subject: Re: HELP: Linker hates me! Date: Tue, 05 May 1998 08:57:15 +0200 Organization: Lehrstuhl fuer Stroemungsmechanik Lines: 39 Message-ID: <354EB84B.C911FF38@LSTM.Ruhr-UNI-Bochum.De> References: <354E35F1 DOT 4EE71278 AT sprynet DOT com> <6ilcql$8e3$1 AT news DOT luth DOT se> NNTP-Posting-Host: bvb.lstm.ruhr-uni-bochum.de Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Precedence: bulk Martin Str|mberg wrote: [...] > > Well I don't have any problems with that code: > descartes:/tmp> gcc -Wall main.cc stuff.cc > main.cc:3: warning: return type for `main' changed to integer type > > However this is more interresting: > descartes:/tmp> gcc -Wall main.cc stuff.c > main.cc:3: warning: return type for `main' changed to integer type > /tmp/cca125441.o: In function `main': > /tmp/cca125441.o(.text+0x8): undefined reference to `foo(void)' Well, C++ does name mangling, so int foo(void); is turned into something like _foo_iv by the C++ compiler to enable type safe linking. The C compiler just turns this into _foo. To make your second example work replace the prototype in main by extern "C" { int foo(void); } -- Ciao Tom ************************************************************* * Thomas Demmer * * Lehrstuhl fuer Stroemungsmechanik * * Ruhr-Uni-Bochum * * Universitaetsstr. 150 * * D-44780 Bochum * * Tel: +49 234 700 6434 * * Fax: +49 234 709 4162 * * http://www.lstm.ruhr-uni-bochum.de/~demmer * *************************************************************