Fortran Coder

查看: 15663|回复: 3
打印 上一主题 下一主题

[子程序] Fortran调用子程序unresolved external symbol _MINO@8

[复制链接]

8

帖子

4

主题

0

精华

入门

F 币
39 元
贡献
25 点
跳转到指定楼层
楼主
发表于 2014-6-21 16:42:03 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
各位大神,以下程序是一个求解线性方程组的程序,可惜运行的时候报错了,错误如下:

--------------------Configuration: Text1 - Win32 Debug--------------------
Linking...
Text1.obj : error LNK2001: unresolved external symbol _MINO@8
Text1.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
Text1.exe - 2 error(s), 0 warning(s)

我读入的txt文档里面的数据是这样的:
4.5 0.2 -1.3 0 0 0 00.2 5.3 0 0 0 0 0-1.3 0 10.2 5.1 0 -1.7 00 0 5.1 8.4 0 0 00 0 0 0 0.6 0 00 0 -1.7 0 0 3.1 00 0 0 0 0 0 5.6

将要输入的数组V(7,1)=(/3.4,5.5,12.3,13.5,0.6,1.4,5.6/)
请大家帮忙看看错误在哪里啊?本人初学者,急于求解啊!~~~

[Fortran] 纯文本查看 复制代码
001program main22
002 IMPLICIT REAL*8(A-H,O-Z)
003 IMPLICIT INTEGER*4(I-N)
004 dimension a(7,7)
005 INTEGER, DIMENSION(7,1)::MAXA(7,1)=RESHAPE((/1,2,4,7,9,10,14/),(/7,1/))
006 DIMENSION V(7,1)
007 open (1,file='E\1.txt')
008 DO i=1,7
009 read(1,*)(a(i,j),j=1,7)
010 END DO
011 write(*,100)((a(i,j),j=1,7),i=1,7)
012 100 FORMAT (2x,7f6.2/6(2x,7f6.2/))
013 WRITE(*,*)'INPUT THE VALUE OF V'
014 DO i=1,7
015 READ(*,*)V(7,1)
016 END DO
017 write(*,100)(V(i,1),i=1,7)
018 
019 
020 call LDLT(a,MAXA,7,0,1,NWK,8)
021 call RESOLVE(a,V,MAXA,7,NWK,8)
022 END
023 
024 SUBROUTINE LDLT(A,MAXA,NN,ISH,IOUT,NWK,NNM)
025 IMPLICIT REAL*8(A-H,O-Z)
026 IMPLICIT INTEGER*4(I-N)
027 DIMENSION A(NWK), MAXA(NNM)
028 IF(NN.EQ.1)RETURN
029 DO 200 N=1,NN
030 KN=MAXA(N)
031 KL=KL+1
032 KU=MAXA(N+1)-1
033 KH=KU-KL
034 IF(KH)304,240,210
035 210 K=N-KH
036 IC=0
037 KLT=KU
038 DO 260 J=1,KH
039 KLT=KLT-1
040 IC=IC+1
041 KI=MAXA(K)
042 ND=MAXA(K+1)-KI-1
043 IF(ND)260,260,270
044 270 KK=MINO(IC,ND)
045 C=0.0
046 DO 280 L=1,KK
047 280 C=C+A(KI+L)*A(KLT+L)
048 A(KLT)=A(KLT)-C
049 260 K=K+1
050 240 K=N
051 B=0.0
052 DO 300 KK=KL,KU
053 K=K-1
054 KI=MAXA(K)
055 C=A(KK)/A(KI)
056 IF(ABS(C).LT.1.0E+07) GOTO 290
057 WRITE(IOUT,2010) N,C
058 STOP
059 290 B=B+C*A(KK)
060 300 A(KK)=C
061 A(KN)=A(KN)-B
062 304 IF(A(KN)) 310,310,200
063 310 IF(ISH.EQ.0) GOTO 320
064 IF(A(KN).EQ.0.0) A(KN)=-1.0E-16
065 GOTO 200
066 320 WRITE(IOUT,2000) N,A(KN)
067 STOP
068 200 CONTINUE
069 RETURN
070 2000 FORMAT(//'Stop-stiffness matrix not positive definite'//'nonpositive pivot for equation', I4//'pivot= ',E20.10)
071 2010 FORMAT(//'Stop-sturm sequence check failed because of multiplier growth for column number', I4,//'Multiplier= ',E20.8)
072 END
073 
074 SUBROUTINE RESOLVE(A,V,MAXA,NN,NWK,NNM)
075 IMPLICIT REAL*8(A-H,O-Z)
076 IMPLICIT INTEGER*4(I-N)
077 DIMENSION A(NWK),V(NN,1),MAXA(NNM)
078 NIP=1
079 DO IP=1,NIP
080 DO 400 N=1,NN
081 KL=MAXA(N)+1
082 KU=MAXA(N+1)-1
083 IF(KU-KL)400,410,410
084 410 K=N
085 C=0.0
086 DO 420 KK=KL,KU
087 K=K-1
088 420 C=C+A(KK)*V(I,IP)
089 V(N,IP)=V(N,IP)-C
090 400 CONTINUE
091 DO 480 N=1,NN
092 K=MAXA(N)
093 480 V(N,IP)=V(N,IP)-C
094 IF(NN.EQ.1)RETURN
095 N=NN
096 DO 500 L=2,NN
097 KL=MAXA(N)+1
098 KU=MAXA(N+1)-1
099 IF(KU-KL)500,510,510
100 510 K=N
101 DO 520 KK=KL,KU
102 K=K-1
103 520 V(K,IP)=V(K,IP)-A(KK)*V(N,IP)
104 500 N=N-1
105ENDDO
106 WRITE(*,*)(V(I,1),I=1,7)
107 END


分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

2038

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1676 元
贡献
715 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

地板
发表于 2014-6-27 07:44:15 | 只看该作者
LDLT分解是个纯过程,貌似不需要调用什么dll函数吧?

18

帖子

3

主题

0

精华

熟手

F 币
116 元
贡献
73 点
板凳
发表于 2014-6-26 23:01:48 | 只看该作者
直观感觉,这MINO很有可能是某个stdcall调用规则出来的dll出口函数。

2038

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1676 元
贡献
715 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

沙发
发表于 2014-6-21 18:08:14 | 只看该作者
LDLT 函数中的 MINO 未定义,如果是函数请补齐,如果是数组,请定义。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2025-5-2 23:44

Powered by Discuz! X3.4

© 2013-2025 Comsenz Inc.

快速回复 返回顶部 返回列表