#fortran #plplot
#fortran #plplot
Вопрос:
Ubuntu 20.04.1 64-bit
Kernel Linux 5.4.0-42-generic x86_64
MATE 1.24.0
gfortran: GNU Fortran (Ubuntu 9.3.0-10ubuntu2) 9.3.0
PLplot library version: 5.15.0
pkg-config --cflags --libs plplot-fortran :
-I/usr/include/plplot
-I/usr/lib/x86_64-linux-gnu/fortran/modules/plplot
-I/usr/include/plplot
-lplplotfortran
В моей Fortran-Program ( USE PLplot
) есть CALL
s для PLgver
, PLsdev
, PLsfnam
PLsetopt
, PLinit
PLsori
, PLenv
PLlab
PLscolbg
, PLcol0
PLcol1
PLfill
, PLpoin
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, и,,. Компиляция программы с gfortran test-plplot.f90 $(pkg-config --cflags --libs plplot-fortran)
приводит к:
24 | CALL PLsetopt ("-geometry","1280x720") ! ... generic 'plsetopt' at (1)
| 1
Error: There is no specific subroutine for the generic ‘plsetopt’ at (1)
Все остальные CALL
подпрограммы PLplot работают (что может быть доказано при комментировании строки с помощью PLsetopt
).
Ответ №1:
Модуль plplot
определяет общее имя plsetopt
как функцию, а не подпрограмму.
Измените вызов процедуры с инструкции call на ссылку на функцию какого-либо рода.
Комментарии:
1. «Модуль plplot определяет общее имя plsetopt как функцию, а не подпрограмму». — Ах, да, я должен был заметить это, например plplot.sourceforge.net/docbook-manual/plplot-html-5.15.0 /… . «Измените вызов процедуры с инструкции вызова на ссылку на функцию какого-либо рода». — Я изменил на
PRINT *, 'PLsetopt (...) : ', PLsetopt (...)
, и компилятор говорит:Error: There is no specific function for the generic ‘plsetopt’ at (1)
2. Что конкретно у вас есть для
...
. У меня это работает…3. ВЫЗОВИТЕ PLsetopt («геометрия»,»1280×720″)
4. Это все еще оператор call. Что конкретно у вас есть при вызове функции.
5. Извините, скопировано из неправильной версии моей программы. Итак, код — как упоминалось выше —
PRINT *, PLsetopt("-geometry","1280x720")
. Удивительно (и к счастью), что сейчас — в отличие от нескольких дней назад — ошибки компилятора нет! Итак, эта проблема решена! Но выходные данные имеют размер не 1280×720, а 1600×900, также при использованииPLsetopt("geometry","1280x720")
без дефиса.