1

サブルーチンが gfortran でコンパイルされ、メイン プログラムが ifort でコンパイルされている fortran で記述されたプログラムを実行しようとしています。

ソースコードは次のとおりです。

サブルーチン:

subroutine testsub
    implicit none
    integer icarte
    read(10,*) icarte
    write(*,*)icarte 
    return 
    end`

メインコード:

program test
    implicit none
    integer i
    open (unit=10, file="file_test")
    do i=1,6
       read(10,*)
    enddo
    call testsub
    close(10)
    end

読み込まれたファイルは次のとおりです。

1
2
3
4
5
6
7 5 6 8
23

そして、私はそのようにコンパイルします:

gfortran -c testsub.f

ar rcs libtest.a testsub.o

ifort -o testexe test.f -L./ -ltest -L/.../gcc/4.7.1/lib64 -lgfortran

そして私は得ました:

At line 4 of file testsub.f (unit = 10, file = 'fort.10')
Fortran runtime error: End of file

サブルーチンに論理ユニットが与えられていないようです。コンパイル オプションをどこかに追加する必要があります...しかし、どこで何をするのかよくわかりません...そして、「両方のファイルを同じコンパイラでコンパイルするとどうなりますか?」という質問に答えるために。: プログラムは完全に実行されます :)

だから誰かがどんなアイデアでも...

4

1 に答える 1

5

これはうまくいきません。メイン プログラムでファイルを開くと、ifort ライブラリの内部のどこかでファイルが開かれ、それに関連付けられた状態が保存されます。GFortran は、ifort ランタイム ライブラリの内部状態について何も認識せず、独自のランタイム ライブラリ状態でユニットを検索しようとしますが、明らかに失敗します。

于 2012-09-14T07:30:15.313 に答える