gcc -x c does link with -ljpeg, gcc -x c++ does not
Matthieu Moy
Matthieu.Moy@st.com
Fri Mar 28 10:33:00 GMT 2003
Stefan Hetzl <shetzl@chello.at> writes:
> Hi,
>
> I want to compile and link a small program (c code) that uses libjpeg. When I
> invoke "gcc -x c -v readcoeff.c -ljpeg" everything works fine, but invoking
> "gcc -x c++ -v readcoeff.c -ljpeg" gives "undefined reference..."-error
> messages for every function from libjpeg (see the attached outputs).
>
> Any Ideas what could be causing this ?
I suppose this is a mangling problem :
In C, a function is uniquely defined by its name, so, the symbol in
the object code can be just the name of the function.
In C++, you can use function overloading, so, you need to have
different symbols for f(int) and f(int, int) for example. This is
called mangling.
The solution is to tell your program that the functions in libjpeg are
C functions compiled with a C compiler by using the
extern "C"
directive.
Something like
extern "C" {
#include "jpeg.h"
}
May do.
--
Matthieu MOY
Ph. D Student at STMicroelectronics and Verimag -- SysAr Team
More information about the Gcc-help
mailing list