我想編譯一個用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庫的鏈接選項。 –