24小时热门版块排行榜    

查看: 1041  |  回复: 13
当前主题已经存档。

忘尘天空

银虫 (小有名气)

[交流] 【求助】关于fortran的

用fortran编写的程序在运行的时候遇到这样的提示:
for.lib(DFORMAIN.OBJ) : error LNK2001: unresolved external symbol _MAIN__
Debug/1.1.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

是什么意思呢?
当我在前面加了PROGRAM的时候,就出下面的提示:

Error: Syntax error, found END-OF-STATEMENT when expecting one of:
  program
又是什么意思呢?请高人指点,感激不尽!
回复此楼

» 猜你喜欢

快乐生活,感恩!
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

老虎大王

木虫 (著名写手)

★ ★
lei0736(金币+2,VIP+0):谢谢 2-10 09:30
你的这个子程序,是可以编通的,但是你编译的时候用了build或者link,就出现了顶楼里的错误。我估计你用的是visual Fortran。

对于光有子程序的文件,只能编译(compile),不要Bulid,否则一定会出现你顶楼所说的错误。

不好意思,我理解有问题,我们绕了一些弯路。
12楼2009-02-09 21:03:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

老虎大王

木虫 (著名写手)

★ ★ ★
lei0736(金币+3,VIP+0):谢谢 2-10 09:27
for.lib(DFORMAIN.OBJ) : error LNK2001: unresolved external symbol _MAIN__
Debug/1.1.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

这个错误,是指有一个外部函数没有声明。
请你检查:你是不是在程序中敲错了某个函数(或子例程)的名字,导致主程序中和函数(或子程序)中使用的名字不一样。

例如:你有一条语句call sub1(。。。。)
但在写子程序的时候写成了 subroutine sbu1(.....)
就会导致这个错误提示。

这是我编程中常见的问题。当然也有可能是其它问题。好像数组名敲错了也有可能引起这个错误提示,使用的编译器不一样,可能情况有所不同。

[ Last edited by 老虎大王 on 2009-2-9 at 19:57 ]
2楼2009-02-09 19:47:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

老虎大王

木虫 (著名写手)

★ ★ ★ ★
lei0736(金币+4,VIP+0):谢谢 2-10 09:27
当我在前面加了PROGRAM的时候,就出下面的提示:

Error: Syntax error, found END-OF-STATEMENT when expecting one of:
  program

这个错误是说,你写了program语句,却没有写上程序名。
如果使用Program语句,必须跟程序名
例如:program my_program
这是一个完整的program语句。如果你只写
program
后面啥都没有,那就会出现你所说的这个错误提示。
3楼2009-02-09 19:52:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

忘尘天空

银虫 (小有名气)

这是我编写的程序
           PROGRAM FAC(I)
         SUBROUTINE FAC(I)
         COMMON RO(0:49)
         RO(0)=1
         DO 1 I1=1,49,1
         RO(I1)=RO(I1-1)*I1
    1           CONTINUE
                 RETURN
         END
   c
运行时,还是出现了这样的提示:
Error: Syntax error, found '(' when expecting one of: ;
       PROGRAM FAC(I)
到底该怎么样修改呢?
谢谢
快乐生活,感恩!
4楼2009-02-09 20:21:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

老虎大王

木虫 (著名写手)


lei0736(金币+1,VIP+0):谢谢 2-10 09:28
这个错误是说program里面的程序名不能带括号。把(i)去掉吧。
5楼2009-02-09 20:25:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

老虎大王

木虫 (著名写手)

★ ★ ★ ★ ★
lei0736(金币+5,VIP+0):谢谢 2-10 09:28
PROGRAM FAC(I)
         SUBROUTINE FAC(I)
         COMMON RO(0:49)
         RO(0)=1
         DO 1 I1=1,49,1
         RO(I1)=RO(I1-1)*I1
    1           CONTINUE
                 RETURN
         END

如果这是你的完整程序,那么它至少有三个问题:
1. 程序名违法,不能带括号。
2.你用了program语句,就说明你这个文件包含一个主程序,但是实际上你的主程序一句话也没有,虽然这是可以的,但是你需要一个End语句来结束主程序(你现在的end语句看来是属于子程序的)
3.子程序FAC(I),其中的参数 I 没有使用,这虽然是允许的,但是会出现警告。
6楼2009-02-09 20:30:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

忘尘天空

银虫 (小有名气)

PROGRAM FAC
         SUBROUTINE FAC(I)
         COMMON RO(0:49)
         RO(0)=1
         DO 1 I1=1,I
         RO(I1)=RO(I1-1)*I1
1              CONTINUE
                 RETURN
         END
c
现在的错误变成了两个
Error: This statement is positioned incorrectly and/or has syntax errors.
  SUBROUTINE FAC(I)
---------^
G:\wangrong\chengxu\XIUGAI\1\1.1.for(8) : Error: A RETURN statement is invalid in the main program.
       RETURN
快乐生活,感恩!
7楼2009-02-09 20:35:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

老虎大王

木虫 (著名写手)

★ ★ ★
lei0736(金币+3,VIP+0):谢谢 2-10 09:28
我刚编译了一下,可以的。但是你的主程序与子程序同名了,这也不行。我给你改成了。
      PROGRAM FAC1

        end
          SUBROUTINE FAC(I)
         COMMON RO(0:49)
         RO(0)=1
         DO 1 I1=1,49,1
         RO(I1)=RO(I1-1)*I1
    1           CONTINUE
                RETURN
         END

第一,主程序名改成了FAC1。
第二,主程序加了END。

这样可以编译通过。
8楼2009-02-09 20:40:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

老虎大王

木虫 (著名写手)

★ ★
lei0736(金币+2,VIP+0):谢谢 2-10 09:29
如果你这个文件只是你的程序的一部分,建议你不要用program语句。你的程序不管分成多少个文件,只能有一个主程序,也就是只能有一个program语句。
9楼2009-02-09 20:43:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

忘尘天空

银虫 (小有名气)

这个只是个子程序的,就是调不通,我就想加个主程序试试看可不可以调好。
我才开始用fortran,请多多指教!
快乐生活,感恩!
10楼2009-02-09 20:48:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 忘尘天空 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[找工作] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +3 QUjhNVAcOSff 2026-09-13 5/250 2026-09-14 21:25 by vZfe6xYu34yj
[公派出国] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +5 QUjhNVAcOSff 2026-09-13 7/350 2026-09-14 21:21 by vZfe6xYu34yj
[考研] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +3 s3fFTmArrBt6 2026-09-14 3/150 2026-09-14 18:01 by Aj1rhIDL5ixY
[考博] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +3 s3fFTmArrBt6 2026-09-14 4/200 2026-09-14 17:49 by Aj1rhIDL5ixY
[找工作] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +3 s3fFTmArrBt6 2026-09-14 4/200 2026-09-14 17:48 by Aj1rhIDL5ixY
[考博] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +4 s3fFTmArrBt6 2026-09-14 4/200 2026-09-14 17:25 by Aj1rhIDL5ixY
[公派出国] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +3 LwdutQ8HoqWP 2026-09-13 5/250 2026-09-14 16:25 by Aj1rhIDL5ixY
[考研] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +4 LwdutQ8HoqWP 2026-09-13 4/200 2026-09-14 16:12 by Aj1rhIDL5ixY
[找工作] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +4 3n8v2C8RimXI 2026-09-13 4/200 2026-09-14 16:00 by Aj1rhIDL5ixY
[教师之家] 售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急 +4 3n8v2C8RimXI 2026-09-13 4/200 2026-09-14 15:48 by Aj1rhIDL5ixY
[考博] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +4 3n8v2C8RimXI 2026-09-13 4/200 2026-09-14 15:37 by Aj1rhIDL5ixY
[找工作] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +5 QUjhNVAcOSff 2026-09-13 6/300 2026-09-14 15:21 by Aj1rhIDL5ixY
[考博] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +4 QUjhNVAcOSff 2026-09-13 4/200 2026-09-14 15:13 by Aj1rhIDL5ixY
[基金申请] 求教各位大神:2026教育部人文社科青年基金项目何时公示呀? +5 云宴山人 2026-09-10 7/350 2026-09-14 12:11 by ecnu2013
[找工作] 浙江师范大学是怎么坑我的 +6 recruit123 2026-09-09 6/300 2026-09-14 12:00 by 萨仁其其格
[博后之家] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +3 QUjhNVAcOSff 2026-09-13 3/150 2026-09-14 10:11 by 23jxep3nCNZb
[考研] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +3 QUjhNVAcOSff 2026-09-13 4/200 2026-09-14 10:01 by 23jxep3nCNZb
[考博] 西北工业大学材料学院电化学传感与催化课题组招收2027年推免研究生、博士生、博士后 +3 马方园 2026-09-10 4/200 2026-09-14 09:29 by Chem张zz
[教师之家] 浙江师范大学是怎么坑我的 +10 recruit123 2026-09-09 15/750 2026-09-13 10:45 by seaskyy
[基金申请] 面上有专家说实验设备不是我们单位的 +6 zj_muchong 2026-09-08 8/400 2026-09-11 06:56 by suifengdao
信息提示
请填处理意见