This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Linking dependencies into static library / Partial linking


Dear David, All,

On Friday 11 January 2008 18:12:41 Dave Korn wrote:
>   It's looking for the mangled versions; the library, as you point out, has
> only unmangled versions.  If you change the start of bar.c from:

When I compile with "g++ -c bar.c" it does, indeed, give an object file with 
mangled names. This was a considerable oversight on my part. Thank you for 
pointing this out.

> extern "C" {
> #include "foo.h"
> }

I just realized, actually, that in this case there should be

#ifdef __cplusplu
  extern "C" {
#endif

in foo.h.

> it will link ok.  (Don't forget to manually pass 'this' as the first arg
> when calling C++ non-static class member functions from C, of course.)

Absolutely right, there. It was a bit of a sloppy omission when drawing up 
this minimal example. Your help has brought me to the point where I can 
actually get on with my work.

I also found an answer to the other part of my question (wanting to use 
a "plain C" compiler/linker to compile my C program, while still using this 
C++ library). Johan Petersson makes some very useful comments on the matter 
here:

http://www.trilithium.com/johan/2005/06/static-libstdc/

Regards,
Philip


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]