Lynn McGuire
2025-01-07 21:35:38 UTC
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.
Thanks,
Lynn
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.
Thanks,
Lynn