ОТКРЫТЬ и ЗАПИСАТЬ файлы в FORTRAN DLL - PullRequest
0 голосов
/ 29 июня 2010

Я пишу на фортране и компилирую с помощью компилятора g95.

Мне нужен вывод файла журнала в библиотеку 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, над которой я работаю, все вылетает. когда я комментирую его обратно, все запускается и работает снова, но, очевидно, не дает желаемого результата.

Есть идеи? Любой человек на Фортране или G95?

1 Ответ

0 голосов
/ 29 июня 2010

Предположение, которое может помочь, а может и нет, я редко использовал DLL-библиотеки Фортрана для прямой записи чего-либо:

  • Куда вы ожидаете, что DLL запишет файл 'LOG.txt'?Возможно, он пытается написать в месте, в которое запрещено писать?Почему это может привести к сбою вашей программы, я не очень уверен, но это то, что вы должны проверить.Я ожидаю, что вы запустили версию вашего кода EXE из одного из ваших пользовательских каталогов.

И комментарий:

  • В общем, избегайте однозначных номеров единиц вFortran.Большинство o / s используют их для stdout, stderr и т. Д., И хотя есть обычные назначения (например, stdout обычно 5, а stderr 6), они не определены в стандарте Fortran, и разработчики компиляторов могут свободно использовать номера единицкак они считают нужным.
...