Re: nasty link problem with Gfortran and G++ (C++) ???

Liste des GroupesRevenir à cl fortran 
Sujet : Re: nasty link problem with Gfortran and G++ (C++) ???
De : sgk (at) *nospam* REMOVEtroutmask.apl.washington.edu (Steven G. Kargl)
Groupes : comp.lang.fortran
Date : 07. Jan 2025, 23:40:18
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <vlkagh$2dm6v$1@dont-email.me>
References : 1
User-Agent : Pan/0.145 (Duplicitous mercenary valetism; d7e168a git.gnome.org/pan2)
On Tue, 07 Jan 2025 15:35:38 -0600, Lynn McGuire wrote:

I just ran into a nasty problem with GFortran and G++ (C++).  Probably
not a bug ???  I am using GCC 14.1.
 
I have a lot of code in C++ (over 100,000 lines).  I have 750,000 lines
of code in GFortran.  I have to extern "C" this code in C++ to make it
callable by GFortran code.
 
I missed declaring a couple of C++ functions as extern "C" which means
that they kept their C++ mangled link names.  But these C++ functions
were declared as integer*8 and external in the GFortran code (old F77
code).
 
So, the GCC linker did not report to me that it did not have a link for
the G++ functions.  This may be a bug, I am not sure.
 
When I ran the program, the C++ functions were not called by the
GFortran code.  Instead, the GFortran code treated the C++ functions as
integer*8 scalar variables.
 
If needful, I can probably put together a small code sample that
exhibits the problem.  Maybe.  It could be that the size of my code
affects the GCC linker.
 
I removed the Gfortran code "external" keywords, extern "C" the C++
functions, added the C++ function to my module list, and got a working
link.


Need to see some actual code.

% cat > foo.c
int
foo(void)
{
   return (1);
}
% gcc14 -c foo.c
% nm foo.o
0000000000000000 T foo
% g++14 -c foo.c
% nm foo.o
0000000000000000 T _Z3foov
% cat > foo.f90
integer*8 function foo()
   foo = 1
end
% gfortran14 -c foo.f90
% nm foo.o
0000000000000000 T foo_

So, with gcc, you get the symbol foo. With g++, you get the mangled
named _Z3foov.  With gfortran, you get foo_.



--
steve

Date Sujet#  Auteur
7 Jan 25 * nasty link problem with Gfortran and G++ (C++) ???22Lynn McGuire
7 Jan 25 +* Re: nasty link problem with Gfortran and G++ (C++) ???16Thomas Koenig
8 Jan 25 i+* Re: nasty link problem with Gfortran and G++ (C++) ???5Lynn McGuire
8 Jan 25 ii`* Re: nasty link problem with Gfortran and G++ (C++) ???4Thomas Koenig
8 Jan 25 ii `* Re: nasty link problem with Gfortran and G++ (C++) ???3Lynn McGuire
8 Jan 25 ii  `* Re: nasty link problem with Gfortran and G++ (C++) ???2Thomas Koenig
8 Jan 25 ii   `- Re: nasty link problem with Gfortran and G++ (C++) ???1Steven G. Kargl
10 Jan 25 i`* Re: nasty link problem with Gfortran and G++ (C++) ???10Lynn McGuire
10 Jan 25 i `* Re: nasty link problem with Gfortran and G++ (C++) ???9Thomas Koenig
10 Jan 25 i  `* Re: nasty link problem with Gfortran and G++ (C++) ???8Lynn McGuire
11 Jan 25 i   `* Re: nasty link problem with Gfortran and G++ (C++) ???7Thomas Koenig
11 Jan 25 i    +* Re: nasty link problem with Gfortran and G++ (C++) ???2Lynn McGuire
11 Jan 25 i    i`- Re: nasty link problem with Gfortran and G++ (C++) ???1Thomas Koenig
12 Jan 25 i    `* Re: nasty link problem with Gfortran and G++ (C++) ???4baf
12 Jan 25 i     +- Re: nasty link problem with Gfortran and G++ (C++) ???1Lynn McGuire
12 Jan 25 i     `* Re: nasty link problem with Gfortran and G++ (C++) ???2Steven G. Kargl
13 Jan 25 i      `- Re: nasty link problem with Gfortran and G++ (C++) ???1baf
7 Jan 25 +- Re: nasty link problem with Gfortran and G++ (C++) ???1Steven G. Kargl
14 Jan 25 `* Re: nasty link problem with Gfortran and G++ (C++) ???4Lynn McGuire
14 Jan 25  `* Re: nasty link problem with Gfortran and G++ (C++) ???3Thomas Koenig
15 Jan 25   `* Re: nasty link problem with Gfortran and G++ (C++) ???2Lynn McGuire
15 Jan 25    `- Re: nasty link problem with Gfortran and G++ (C++) ???1Thomas Koenig

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal