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