私はFortranアプリケーションでネットワーキング機能を呼び出せるようにしたいと考えています。私の上司は、CとFortranを使用するのではなく、Fortranですべてをやりたいと思っています。 WindowsでPGIのFortranコンパイラを使用してすでにアプリケーションのバージョンを完成させています。私たちはおそらくそのコンパイラを使うLinuxに移しています。今、私はgfortranを使用しています。ソケットプログラミングgfortran
私はこれらのネットワーキングコール用のインターフェイスを作成しましたが、すべてがコンパイルおよびリンクされています。以下のコードは、インターフェースと定数がモジュール内にあることを除いて、私がやっていることに似ています。
PROGRAM MAIN
INTEGER,PARAMETER ::AF_INET = 2
INTEGER,PARAMETER ::SOCK_STREAM = 1
INTEGER,PARAMETER ::IPPROTO_TCP = 6
INTERFACE
FUNCTION socket(domain,type,protocol)
INTEGER ::socket,domain,type,protocol
END FUNCTION
END INTERFACE
sock = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP)
WRTIE(*,*)"Socket returned: ",sock
END PROGRAM
私がプログラムを実行すると、ソケット関数は-1を返して失敗します。私は何が起こっているのか本当に知りません。私はコマンドラインにライブラリを追加しないので、デフォルトのライブラリと正しくリンクしていると思います。コンパイルを使用して
gfortran -o MAIN_PROGRAM MAIN_PROGRAM.f90 -fno-underscoring
あなたはerrnoをチェックしようとしたことがありますか? –