Forums before death by AOL, social media and spammers... "We can't have nice things"
|    comp.lang.fortran    |    Putting John Backus on a giant pedestal    |    5,127 messages    |
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
|    Message 4,913 of 5,127    |
|    Thomas Koenig to Lynn McGuire    |
|    Re: nasty link problem with Gfortran and    |
|    15 Jan 25 07:10:34    |
   
   From: tkoenig@netcologne.de   
      
   Lynn McGuire schrieb:   
   > On 1/14/2025 12:42 PM, Thomas Koenig wrote:   
   >> Lynn McGuire schrieb:   
   >>   
   >>> I found and fixed the problem with my code along with one of my   
   >>> programmers. I was not properly handling the size_t hidden argument   
   >>> length value that GFortran adds to the character string arguments in my   
   >>> C++ code. Things are going better now.   
   >>   
   >> Good to hear that.   
   >>   
   >> Another thing that works well for gcc is to link everything with   
   >> the -flto option.   
   >>   
   >> An example:   
   >>   
   >> $ cat main.f90   
   >> program memain   
   >> character *1 c   
   >> call foo(c)   
   >> print *,c   
   >> end   
   >> $ cat foo.c   
   >> void foo_(char *c)   
   >> {   
   >> *c = 'A';   
   >> }   
   >> $ gfortran -flto main.f90 foo.c   
   >> main.f90:3:13: warning: type of 'foo' does not match original declaration   
   [-Wlto-type-mismatch]   
   >> 3 | call foo(c)   
   >> | ^   
   >> foo.c:1:6: note: type mismatch in parameter 2   
   >> 1 | void foo_(char *c)   
   >> | ^   
   >> foo.c:1:6: note: type 'void' should match type 'long int'   
   >> foo.c:1:6: note: 'foo_' was previously declared here   
   >   
   > I will try it.   
      
   Just a warning - be prepared for loooong compile times.   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   
|
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
(c) 1994, bbs@darkrealms.ca