[問題] 有關.error LNK2001

作者: zmack0905 (降太)   2012-10-01 18:14:33
這是一個IVPAG的範例,我照著打.
PROGRAM HOMEWORK
IMPLICIT NONE
INTEGER N, NPARAM
PARAMETER (N=3, NPARAM=50)
C
C 宣告區域變數
C
INTEGER IDO, IEND, NOUT
REAL A(1,1), PARAM(NPARAM), T, TEND, TOL, Y(N)
C
C 宣告使用的副程式
C
EXTERNAL IVPAG, SSET, UMACH
C
C 宣告函數
C
EXTERNAL FCN, FCNJ
C
C 初始設定
C
CALL SSET (NPARAM, 0.0, PARAM, 1)
IDO = 1
T = 0.0
Y(1) = 0.0
Y(2) = 1.0
Y(3) = 1.0
TOL = 1.0E-6
C
C 寫入欄位名稱
C
CALL UMACH (2, NOUT)
WRITE (NOUT,99998)
C
C 對常微分方程積分
C
IEND=0
10 CONTINUE
IEND = IEND + 1
TEND = IEND
C
CALL IVPAG (IDO, N, FCN, FCNJ, A, T, TEND, TOL, PARAM, Y)
IF (IEND .LE. 10) THEN
WRITE (NOUT,99999) T, Y
C
C 迴圈結束條件
C
IF (IEND .EQ. 10) IDO = 3
C
GO TO 10
C
END IF
C
C 製作輸出表格
C
99998 FORMAT (11X, 'T', 11X, 'Y(1)', 11X, 'Y(2)', 11X, 'Y(3)')
99999 FORMAT (4F15.5)
END
C
SUBROUTINE FCN (N, X, Y, YPRIME)
C
C 宣告參數
C
INTEGER N
REAL X, Y(N), YPRIME(N)
C
YPRIME(1) = Y(2)*Y(3)
YPRIME(2) = -Y(1)*Y(3)
YPRIME(3) = -0.51*Y(1)*Y(2)
RETURN
END
C
SUBROUTINE FCNJ (N, X, Y, DYPDY)
C 宣告參數
INTEGER N
REAL X, Y(N), DYPDY(N,*)
C
RETURN
END
在compile都沒事.開始build的時候
作者: gilocustom   0000-00-00 00:00:00
錯誤訊息是說找不到SSET, UMACH還有IVPAG這三個副程式,如果編譯器有支援的話就補上相對應的編譯選項,否則就自己準備好,一起編譯。
作者: zmack0905 (降太)   0000-00-00 00:00:00
我後來在前面加上Use imsl.並刪掉external sset等項目結果又可以了= =.可以問一下是怎麼回事嗎?
作者: kkarthur (aa)   0000-00-00 00:00:00
F90和F77的格式差別..use module是f90才有的功能
作者: gilocustom   0000-00-00 00:00:00
因為這三個副程式就含括在imsl這個module中,故use imsl即完成相關的宣告。
作者: zmack0905 (降太)   0000-00-00 00:00:00
那可以問一下.如果想用CALL的寫法該怎辦..?
作者: gilocustom   0000-00-00 00:00:00
什麼是"CALL的寫法"?
作者: zmack0905 (降太)   0000-00-00 00:00:00
?講錯,如果不打USE 直接用EXTRANAL+CALL 可以嗎?
作者: gilocustom   0000-00-00 00:00:00
那請問你這些副程式要打哪兒來?你可以自備嗎?
作者: zmack0905 (降太)   0000-00-00 00:00:00
喔喔.所以說只要不使用USE,就無法使用IVPAG嘛?(我有IMSL
作者: gilocustom   0000-00-00 00:00:00
如果你說的IVPAG是IMSL的IVPAG的話,對。
作者: zmack0905 (降太)   0000-00-00 00:00:00
謝謝=ˇ=

Links booklink

Contact Us: admin [ a t ] ucptt.com