RE: Linking c code with cpp code

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Make sure you are using the code below around your C function prototypes
that get included by your C++ code.  Otherwise the C++ compiler will mangle
the C function names and result in a failed link.  Also (I just ran into
this yesterday), if you want to call a C++ function from C (I was loading a
C++ plugin [*.so] into a C program) you can use the 'extern "C"' qualifier
in front of the C++ function declaration to keep the C++ compiler from
mangling the name of that specific C++ function.

#ifdef __cplusplus
   extern "C" {
#endif

/* C Function prototypes */

#ifdef __cplusplus
   }
#endif



-----Original Message-----
From: Agnar Renolen [mailto:agnar.renolen@xxxxxxx]
Sent: Thursday, October 30, 2003 6:00 AM
To: gcc-help@xxxxxxxxxxx
Subject: Linking c code with cpp code


Hello,

I'm trying to integrate GNU Rx into a c++ program.  But I can't link
them together.

I get an error something like:

 <filename>.o(.text+0x72c):<filename>.cpp: undefined reference to
re_compile_pattern( ...)

when GCC tries to link the program.

It appears to me that when i compile regex.c with the C compiler, it
generates object code that is incompatible with the object code
generated by the C++ compiler, obviously due to the way the functions
are declared in regex.c

Is there a way to override these declarations so the c-compiler
generates object code that allows me to link them together?

Or is there a way I can make the linker link them together anyway.

Any suggestions?

Agnar Renolen
Trondheim
NORWAY


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux