- 締切済み
FortranプログラムからC言語で実装された関数を呼ぶ方法
Windows Vista Home PremiumにFTN95をインストールしたPCにて、Fortranのプログラミングをし始め、「Cpad for Salford FTN77」を利用してプログラミングをしています(FORTRAN77・Fortran90ともに)。FTN95でのFortranプログラミングに際し、FortranプログラムからC言語で実装された関数を呼ぶには、どのように対処すれば可能になりますでしょうか?何分初心者ですので、拙い質問かと思いますが、何卒ご教示願います。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- kt1965
- ベストアンサー率34% (116/339)
回答No.1
回答いたします。 ユーザーガイドの213ページ(アクロバットだと、231ページ)に出ています。具体的には、Fortranプログラム中に、C_EXTERNALという宣言をした関数は、Cの関数と同じくアクセスできるようになります。 そしてC側では、 #extern <返り値>関数名(引数)を与えれば、Cの関数として呼び込むことが出来ます。 ユーザガイドの仕様にしたがってサンプルを書いてみると。 サンプル2を例に取ります。 Fortran側 C_EXTERNAL WRITE 'WriteFile' : INTEGER*4 INTERGER*4 RESULT RESULT=WRITE() 以下続く 最後は、RETURN C側 #extern int Writefile(int); こんな感じですね。 では。
お礼
上記の例を提示してくださり、ありがとうございました。ところで、コンパイルのほうですが、うまくいきません。 何が問題でしょうか?再度ご教示願います。
補足
上記の例を提示してくださり、ありがとうございました。ところで、コンパイルのほうですが、うまくいきません。Fortran側でRETURNを最後に持ってくると D:\work\fortran> ftn95c /link /dreal sample.f D:\work\fortran>ftn95.exe /link /dreal sample.f /link [FTN95/Win32 Ver. 5.01.0 Copyright (c) Silverfrost Ltd 1993-2006] 0005) return *** RETURN cannot be inside a PROGRAM block 1 ERROR [<main program> FTN95/Win32 v5.01.0] *** Compilation failed となってしまうのです。「Cpad for Salford FTN77」を使ってコンパイルしています。 使っているファイルをいくつか書き出します。 <D:\work\fortran\sample.f> C_EXTERNAL WRITE 'WriteFile' : INTEGER*4 INTEGER*4 RESULT RESULT=WRITE() write(*,*) result return end <D:\work\fortran\sample.c> #extern int Writefile(int); <C:\Program Files\Silverfrost\FTN95\ftn95c.bat> ftn95.exe %1 %2 %3 %4 %5 %6 %7 %8 %9 /link ちなみに、「Cpad for Salford FTN77」での実行/設定/実行/コンパイル時のパラメータは「/link /dreal」です。もちろんftn95.exeへのパスは通してあります。 何が問題でしょうか?再度ご教示願います。