主题:子程序间参数传递问题,不胜感激!
七区902
[专家分:0] 发布于 2010-07-07 15:33:00
主程序运行时产生以下错误
TOTASS.OBJ : error LNK2001: unresolved external symbol _CO2@4
Debug/W70MAIN.exe : fatal error LNK1120: 1 unresolved externals
首先子程序程序TOTASS需要用到CO2的值,所以我编译了一个CO2读入子程序以备调用。在读入CO2值时,我已经定义了CO动态2数组,但是在程序TOTASS调用参数CO2时,却提示如上,怎么解决这个问题,即让主程序调用CO2时仍然认定它是数组,而不会出错。
TOTASS,CO2read均是子程序。
我是一个新手,敬请各位前辈指教,不胜感激,谢谢!
附:读入的CO2文本类型如下:
year co2
1960 340
1961 341
1962 342
。。 。。
。。 。。
。。 。。
行数不确定
最后更新于:2010-07-08 12:40:00
回复列表 (共14个回复)
沙发
cgl_lgs [专家分:21040] 发布于 2010-07-07 22:40:00
错误提示为找不到co2函数。
板凳
七区902 [专家分:0] 发布于 2010-07-08 02:21:00
可是我定义的co2是个数组啊,我用到的是co2的值,望继续赐教,谢谢。
3 楼
yeg001 [专家分:14390] 发布于 2010-07-08 07:50:00
那你就贴相关代码吧! 按你这样说你都没有错那为什么编译器报错呢...
4 楼
adda [专家分:1520] 发布于 2010-07-08 09:48:00
贴代码看看
可能是数组没声明,类似与co2(1,1)这样的语句被认为是函数调用
5 楼
七区902 [专家分:0] 发布于 2010-07-08 10:51:00
yeg001和adda前辈说的有道理,我编的CO2读入程序如下,子程序TOTASS调用的是CO2(year),不知道有什么错误 ,请指教。
SUBROUTINE co2read
implicit none
integer i,n
logical alive
real,allocatable:: co2(:)
character buffer*2
open (110,file = 'info.txt')
read (110,*) buffer
n = 0
do i = 1,10000
read(110,*,END = 20) buffer
n = n+1
end do
20 continue
rewind(110)
allocate (co2(n))
read (110,*) buffer
do i = 1,n
read(110,*) buffer,co2(i)
end do
close(110)
end
6 楼
asymptotic [专家分:16630] 发布于 2010-07-08 11:48:00
CO2(year) 只是 CO2Read 子程序的局部变量,与子程序 TOTASS 毫无关系。
阁下在子程序 TOTASS 中调用的是 CO2(year),因此结果正如 4 楼 adda 所说。
7 楼
七区902 [专家分:0] 发布于 2010-07-08 12:39:00
那么前辈,为了让TOTASS成功调用CO2(year),我该怎么修改CO2read程序呢?敬请指教,谢谢!
主程序运行时产生以下错误
TOTASS.OBJ : error LNK2001: unresolved external symbol _CO2@4
Debug/W70MAIN.exe : fatal error LNK1120: 1 unresolved externals
首先子程序程序TOTASS需要用到CO2的值,所以我编译了一个CO2读入子程序以备调用。在读入CO2值时,我已经定义了CO动态2数组,但是在程序TOTASS调用参数CO2时,却提示如上,怎么解决这个问题,即让主程序调用CO2时仍然认定它是数组,而不会出错。
TOTASS,CO2read均是子程序。
我是一个新手,敬请各位前辈指教,不胜感激,谢谢!
附:读入的CO2文本类型(即程序中的info.txt)如下:
year co2
1960 340
1961 341
1962 342
。。 。。
。。 。。
。。 。。
行数不确定
8 楼
cgl_lgs [专家分:21040] 发布于 2010-07-08 16:55:00
把CO2搞成模块变量吧。
9 楼
七区902 [专家分:0] 发布于 2010-07-08 19:59:00
您是说利用module 命令吗?
10 楼
asymptotic [专家分:16630] 发布于 2010-07-08 20:39:00
利用 Fortran 2003 语言新特性, allocatable 数组(元素)做实参、形参。
我来回复