Fortran模块分段故障-GNUFOR

Fortran模块分段故障-GNUFOR,fortran,gnuplot,Fortran,Gnuplot,我需要一个专门的Fortran库,这样我就可以动态地编码和可视化,而不是写入文本文件,然后使用Python或Matlab进行绘图。我接着说: 指令没有被清除,所以我没有使用它们的示例,所以我编写了自己的代码。有两个文件:gnu.f90来自网站,以及myplot.f90,我这样写的: program myplot !Declare data types implicit none integer, parameter :: N1 = 50 real(kind=

我需要一个专门的Fortran库,这样我就可以动态地编码和可视化,而不是写入文本文件,然后使用Python或Matlab进行绘图。我接着说:

指令没有被清除,所以我没有使用它们的示例,所以我编写了自己的代码。有两个文件:gnu.f90来自网站,以及myplot.f90,我这样写的:

program myplot


    !Declare data types
    implicit none
    integer, parameter :: N1 = 50
    real(kind=8)       :: x1(N1),x2(N1)
    real(kind=8)       :: y1(N1)
    real(kind=8)       :: y2(N1)
    integer            :: i

    !Generate 2D plot

    do i = 1,N1
        x1(i) = i
        x2(i) = i
    end do

    y1 = x1**2
    y2 = x2**3

    !print *, 'Plotting'
    !call plot(x1,y1,x2,y2)

    call write_xy_data(x1,y1)   

end program myplot
显然,从他们的gnufor.f90文件中,我只需要执行以下操作:

写入_xy_数据(X,Y),它应该可以工作。在他们的示例代码中,他们没有使用gnufor.f90作为一个模块,所以我没有在开头写:use gnufor。虽然我试过了,但效果不太好。因此,在我当前的目录中,我有:

gnufor.90 myplot.f90

为了编译它,我在Linux上:
gfortran myplot.f90-o test
错误是:

 Program received signal SIGSEGV: Segmentation fault - invalid memory reference.

    Backtrace for this error:
    #0  0x7FB0B051DE08
    #1  0x7FB0B051CF90
    #2  0x7FB0AFF574AF
    #3  0x40302F in write_xy_data_
    #4  0x400D7E in MAIN__ at myplot.f90:?
    Segmentation fault (core dumped)

非常感谢您的帮助。虽然声明了所有数组大小,但我希望问题出现在我自己的代码中

您链接的网站的gnufor.f90中的子例程
write_xy_data
具有签名

subroutine write_xy_data(data_filename, n, x, y, ierror)
    implicit none
    character ( len = * ) data_filename
    integer ( kind = 4 ) n
    real ( kind = 8 ) x(n)
    real ( kind = 8 ) y(n)
    integer(kind = 4) ierror
这意味着,您必须将其称为

call write_xy_data('myfile',N1,x1,y1,ierr)
作为参数传递要写入的文件名(
'myfile'
,在示例中),要写入的点数(
N1
),数据(
x1,y1
)和包含写入成功信息的整数(
ierror
,也必须声明此整数)


此外,没有模块
gnufor
,因此不需要
use
子句,gnufor.F90中的所有函数都是全局函数,这也是您需要将点数作为额外参数传递的原因,假设形状需要一个明确的接口。

请回答问题以显示子程序的接口
write_xy_data
。很可能你没有正确地称呼它。[如果有可用的模块,为什么不使用它?]您尝试启动了什么?您说您的编译行是
gfortran myplot.f90-o test
,但这不应该是
gfortran gnufor.f90 myplot.f90-o test
回溯显示问题出在write_xy_数据中,您没有显示。gfortran附带了许多帮助调试的选项。这些可能对你有帮助。请参阅您的文档。我不知道Fortran,但调用的签名是
子例程write\u xy\u data(data\u filename,n,x,y,ierror)
,因此您可能缺少一些参数。你试过编译吗?