Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Как в Linux из C++ обратится к Fortran'овской процедуре? (http://forum.oszone.net/showthread.php?t=29480)

Zar 03-09-2004 13:30 204101

[rus]Ya znaju kak iz C, no v C++ etot sposob ne prokatybaet.[/rus]

Zar 03-09-2004 16:41 204102

Kak v Linux iz C++ obratit'sya k Fortran'ovskoi procedure?
 
c2f77.cpp:
extern "C++"
{
extern void showhie_(/*char* hello,*/int* length,double* e);
}
int main ( )
{
int i;
char hello[32];
//showhie(char *fr,int x,float f);
int length=sizeof(hello);
length=56;
double e = 21.7;
strcpy(hello,"Hello Fortran from C");
for (i=strlen(hello);i<length; i++)
hello[i]=' ';
showhie_(/*hello,*/&length,&e);
//Showhie(hello,length,e)
return 0;
}
showhie.f:     SUBROUTINE SHOWHIE(LENGTH,E)
c      CHARACTER*(*) HELLO
     INTEGER LENGTH
     REAL E
c    
     WRITE(*,100),LENGTH,E
 100 FORMAT(3X,A,2X,I3,4X,F6.4)
     RETURN
     END SUBROUTINE SHOWHIE
ffromc.bat:
f77 -c showhie.f -o showhie.o
g++ -c c2f77.cpp -o c2f77.o
g++ c2f77.o showhie.o -lg2c -lm -o c2f77

./ffromc.bat vydaet:
c2f77.o(.text+0x6c): In function `main':
: undefined reference to `showhie_(int *, double *)'
collect2: ld returned 1 exit status

Chto eto takoe, s chem svyazano? Kak ispravit'?

[s]Исправлено: Zar, 16:43 3-09-2004[/s]

ruslandh 03-09-2004 21:12 204103

Kak v Linux iz C++ obratit'sya k Fortran'ovskoi procedure?
 
extern "C"
{
extern void showhie_(/*char* hello,*/int* length,double* e);
}
]
А если так ?

Zar 03-09-2004 21:51 204104

Kak v Linux iz C++ obratit'sya k Fortran'ovskoi procedure?
 
Ur-a-a-a-a-a-a-a!!!
Zarabotalo-o!

:rotate:

Большое спасибо, я уж и не надеялся узнать.




[s]Исправлено: Prisoner, 3:05 6-09-2004[/s]


Время: 05:40.

Время: 05:40.
© OSzone.net 2001-