www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2001/04/25/07:00:05

From: Hans-Bernhard Broeker <broeker AT physik DOT rwth-aachen DOT de>
Newsgroups: comp.os.msdos.djgpp
Subject: Re: selectively turning off function name mangling in C++
Date: 25 Apr 2001 10:49:58 GMT
Organization: Aachen University of Technology (RWTH)
Lines: 35
Message-ID: <9c6a4m$2bv$1@nets3.rz.RWTH-Aachen.DE>
References: <9c5o5s$fvc$1 AT mulga DOT cs DOT mu DOT OZ DOT AU>
NNTP-Posting-Host: acp3bf.physik.rwth-aachen.de
X-Trace: nets3.rz.RWTH-Aachen.DE 988195798 2431 137.226.32.75 (25 Apr 2001 10:49:58 GMT)
X-Complaints-To: abuse AT rwth-aachen DOT de
NNTP-Posting-Date: 25 Apr 2001 10:49:58 GMT
Originator: broeker@
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

Alistair_P SHILTON <apsh AT ecr DOT mu DOT oz DOT au> wrote:
> I was wondering if it is possible to tell gxx to not mangle the names of
> certain functions?  I've been trying to interface some of my C++ code with
> some fortran code I downloaded of the net.  g77 mangles its function names
> by adding _'s to start and finish (so foo becomes _foo_).  

Careful, there --- that's not the only effect. Fortran also adds
invisible parameters for multidimensional variable-sized array
arguments, and it passes all arguments by reference.  It also treats
strings in a wildly different way than the NUL-terminated variety used
by C and C++.

You may want to get your hands on the 'cfortran.h' package to help you
get around these pitfalls, while still keeping your own source code as
portable as possible.

> But gxx mangles the same function to _foo__*** (*** = annoying junk)
> - which stops the .o files from linking correctly!

Learn about the 

	extern "C"

qualifier of C++.  Note that even this won't let you blindly call C++
methods from Fortran: the "this" pointer will be missing, and it's
hard to find out when and how to add it in manually.

Calling other language functions from C++ is rather simple as long as
they have a C-compatible calling interface available. Calling C++
methods from other languages can be close to impossible without
extensive knowledge about internal C++ compiler details.

-- 
Hans-Bernhard Broeker (broeker AT physik DOT rwth-aachen DOT de)
Even if all the snow were burnt, ashes would remain.

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019