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' 写入到哪里?是否可能试图写入禁止写入的位置?为什么这会使您的程序崩溃我不太确定,但您需要检查一下。我希望您从您的用户目录之一运行代码的 EXE 版本。

并且,一条评论:

  • 通常避免在 Fortran 中使用单位数。大多数 o/s 将它们用于 stdout、stderr 等,虽然有通常的分配(例如,我认为 stdout 通常是 5,而 stderr 6)这些在 Fortran 标准中没有定义,编译器编写者可以自由使用单元号他们认为合适的。
于 2010-06-29T15:55:59.723 回答