0

私は fortran で書き、g95 コンパイラを使用してコンパイルしています。

私が書いている DLL にログ ファイルを出力する必要があります。DLL は現在マスター プログラムとリンクして実行されていますが、誤った結果が生成されます。FORTRAN についてはよくわかりませんが、コンパイルした EXE で出力を生成する次のコードを取得しました。

  OPEN(UNIT=3, FILE='LOG.txt', STATUS='NEW')
  WRITE(3,*) "the gospel of PTP is bestowed upon the file."
  CLOSE(3)

これはスタンドアロンのEXEで機能します。実行すると、文字列を含むファイルが生成されます。しかし、私が取り組んでいるDLLにそれを含めようとすると、すべてがクラッシュします。コメントアウトすると、すべてが実行されて再び機能しますが、明らかに目的の出力が生成されません。

何か案は?FORTRAN または g95 の人はいますか?

4

1 に答える 1

0

役に立つかもしれないし、役に立たないかもしれない推測ですが、Fortran DLL を使って直接何かを書くことはめったにありません。

  • DLL がファイル 'LOG.txt' をどこに書き込むと思いますか? 書き込みが禁止されている場所に書き込もうとしている可能性がありますか? なぜそれがあなたのプログラムをクラッシュさせるのか私にはよくわかりませんが、あなたがチェックするものです. ユーザー ディレクトリの 1 つからコードの EXE バージョンを実行したと思います。

そして、コメント:

  • 一般に、Fortran では 1 桁のユニット番号は避けてください。ほとんどの o/s は stdout、stderr などにそれらを使用し、通常の割り当てがありますが (たとえば、stdout は通常 5 で、stderr は 6 だと思います)、これらは Fortran 標準では定義されておらず、コンパイラ ライターはユニット番号を自由に使用できます。彼らが適切だと思うように。
于 2010-06-29T15:55:59.723 に答える