回 帖 发 新 帖 刷新版面

主题:[讨论]链接错误。。。求助

在编译拉格朗日插值时链接错误,不知道怎么办..........

问题提示如下,
Linking...
libc.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/assignment testing.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
assignment testing.exe - 2 error(s), 0 warning(s)

程序如下,
    SUBROUTINE lagrangeinterpolation(X,Y,m,T,Z)
    DIMENSION X(m),Y(m)
    REAL X,Y,T,Z,S
    IF (m>0) THEN
        IF (X(1)>X(m)) THEN
            DO I=1,m/2
            Z=X(I)
            X(I)=X(m-I+1)
            X(m-I+1)=Z
            Z=Y(I)
            Y(I)=Y(m-I+1)
            Y(m-I+1)=Z
            END DO
        END IF
    END IF
    Z=0.0
    IF (m<=0) RETURN
    IF (m==1) THEN
        Z=Y(1)
        RETURN
    END IF
    IF (m==2) THEN
        Z=(Y(1)*(T-X(2)-Y(2)*(T-X(1))))/(X(1)-X(2))
        RETURN
    END IF
    I=1
10    IF (X(I)<T) THEN
        I=I+1
        IF (I<=m) GOTO 10
    END IF    
    K=I-4
    IF (K<1) K=1
    M1=I+3
    IF (M1>m) M1=m
    DO I=K,M1
        S=1.0
        DO J=K,M1
            IF (j/=I) THEN
                S=S*(T-X(J))/(X(I)-X(J))
            END IF
        END DO
        Z=Z+S*Y(I)
    END DO
    RETURN    
    END
谁能帮忙看看?解决下,另外求拉格朗日插值得积分和求导程序。[em8]

回复列表 (共9个回复)

沙发


main
这个子程序没有申明

板凳

怎么修改呢?

3 楼

最简单的方法 是在你 那个 end  后再加一个 end  。

4 楼


SUBROUTINE lagrangeinterpolation(X,Y,m,T,Z)
    DIMENSION X(m),Y(m)
    REAL X,Y,T,Z,S
    IF (m>0) THEN
        IF (X(1)>X(m)) THEN
            DO I=1,m/2
            Z=X(I)
            X(I)=X(m-I+1)
            X(m-I+1)=Z
            Z=Y(I)
            Y(I)=Y(m-I+1)
            Y(m-I+1)=Z
            END DO
        END IF
    END IF
    Z=0.0
    IF (m<=0) RETURN
    IF (m==1) THEN
        Z=Y(1)
        RETURN
    END IF
    IF (m==2) THEN
        Z=(Y(1)*(T-X(2)-Y(2)*(T-X(1))))/(X(1)-X(2))
        RETURN
    END IF
    I=1
10    IF (X(I)<T) THEN
        I=I+1
        IF (I<=m) GOTO 10
    END IF    
    K=I-4
    IF (K<1) K=1
    M1=I+3
    IF (M1>m) M1=m
    DO I=K,M1
        S=1.0
        DO J=K,M1
            IF (j/=I) THEN
                S=S*(T-X(J))/(X(I)-X(J))
            END IF
        END DO
        Z=Z+S*Y(I)
    END DO
    RETURN    
    END


end

5 楼

在调用main子程序的程序开头 加一句 integer(real) main

6 楼

加end,,, 后链接还是有一样的错误。。。

加integer(real) main 后错误一堆。。。。。

7 楼

加 end 后的 结果

Linking...
Text1.obj : error LNK2005: _main already defined in Text22.obj
Text2.exe : fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe.
Text2.exe - 2 error(s), 0 warning(s)
怎么办呢

8 楼

你没有写主程序,我给你写个例子:

program test
integer,parameter::m=4
real::X(m)=(/-1.,1.,2.,5./),Y(m)=(/-7.,7.,-4.,35./)
real::T=1.,Z=0.
call lagrangeinterpolation(X,Y,m,T,Z)
write(*,*) Z
end

9 楼

楼上的正解,哈哈。

我来回复

您尚未登录,请登录后再回复。点此登录或注册