我必须对从 C/C++ 调用 FORTRAN 子例程进行概念验证。我不知道我在正确的方向,请指导我....
我所做的是...
我写了以下 FORTRAN 代码
INTEGER*4 FUNCTION Fact (n)
INTEGER*4 n
INTEGER*4 i, amt
amt = 1
DO i = 1, n
amt = amt * i
END DO
Fact = amt
END
SUBROUTINE Pythagoras (a, b, c)
REAL*4 a
REAL*4 b
REAL*4 c
c = SQRT (a * a + b * b)
END
使用 g77 编译它g77.exe -c FORTRANfun.for
我写了以下c代码...
#include <stdio.h>
extern int __stdcall FACT (int n);
extern void __stdcall PYTHAGORAS (float a, float b, float *c);
main()
{
float c;
printf("Factorial of 7 is: %d\n", FACT(7));
PYTHAGORAS (30, 40, &c);
printf("Hypotenuse if sides 30, 40 is: %f\n", c);
}
使用 Visual Studio C 编译器将其编译为cl /c new.c
当我尝试链接时,因为LINK new.obj FORTRANfun.o
我收到以下错误...
new.obj : error LNK2019: unresolved external symbol _FACT@4 referenced in function _main
new.obj : error LNK2019: unresolved external symbol _PYTHAGORAS@12 referenced in function _main
new.exe : fatal error LNK1120: 2 unresolved externals