我想编译一个用FORTRAN编写的程序,该程序使用DISLIN库绘制图表,但所有数据都是双精度的。我不能失去这个精度,所以将所有内容传递给简单的精度不是一个选项。当我尝试链接到双精度库(_D),我还是收到以下错误我希望有我挂简单的精准库:DISLIN双精度库
call graf(-1.D0, 1.D0, -1.D0, 2.D0/10.D0, -1.D0, 1.D0, -1.D0, 2.D0/10.)
(1)
ERROR: Type mismatch in argument 'ax' at (1); passed from REAL(8) to REAL(4).
我也得到所有绘制报表等这样的错误。我的编译命令是(gfortran):
gfortran modulename.f95 progname.f95 C:\dislin\disgf_d.a -luser32 -lgdi32 -lopengl32
请注意,disgf_d是指双精度库。有没有人有任何想法吗?
相关的代码:
call metafl("XWIN")
call disini()
call graf(-1.D0, 1.D0, -1.D0, 2.D0/10.D0, -1.D0, 1.D0, -1.D0, 2.D0/10.D0)
do i = 0, m
Z(i) = -1.D0 + (2.D0*i)/m
Y_Z(i) = Int_g(Z(i))
end do
call curve (Z, Y_Z, m + 1)
do i = 0, m
Y_Z(i) = g(Z(i))
end do
call curve (Z, Y_Z, m + 1)
call endgrf()
call disfin()
该错误告诉你,特定参数是*不*双精度。您需要研究包文档(或源代码)以确保您为每个参数使用正确的类型。 – agentp
我期望'-ldislin_d'作为双精度dislin库的链接选项。 –