C
Cottonwood
Cottonwood said:I want to call a C module from a Fortran program. Whatever I tried -
the linker could not find the C module. I know about the leading
underscore and switched even that off. I abstracted everything
possible. When I replace the C module by a Fortran subroutine linking
works. Here the Fortran subroutine that replaced the C module for
testing:
subroutine qqcprint
return
end
But when I use this C module in the same library (replacing the Fortran
testmodule) linking didn't work any longer.
void qqcprint()
{
return;
}
I also tried it with this one:
extern void qqcprint()
{
return;
}
The result was always the same. With the Fortran subroutine linking
works, with one of the C modules I get the message
qqmodlib.a(qqprint.o):qqprint.for.text+0x42): undefined reference to
`qqcprint'
So what am I doing wrong?
[email protected] said:I just noticed that you crossposted to gnu.g++,help.
Is there any chance you compiled your C code with
g++? If so, you might need to use extern "C".
Bob Corbett
Thank you so much. As a C beginner I wasn't able to see that. Now it
works with my changed C procedure:
extern "C" void qqcprint()
{
return;
}
And many thanks to all the other guys. Meanwhile I understood why I
shouldn't use the answer button below the posts.