【发布时间】:2015-04-24 17:47:12
【问题描述】:
我正在尝试编译一个用 FORTRAN 编写的程序,该程序使用 DISLIN 库绘制图形,但所有数据都是双精度的。我不能失去这种精度,因此不能将所有内容都传递给简单的精度。当我尝试链接到双精度库 (_d) 时,如果链接到简单精度库,我仍然会收到以下错误:
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()
【问题讨论】:
-
该错误告诉您特定参数是 not 双精度。您需要研究包文档(或源代码)以确保为每个参数使用正确的类型。
-
我希望
-ldislin_d作为双精度 dislin 库的链接选项。
标签: plot fortran gfortran double-precision