- 积分
- 218
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2011-6-23
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
请教各位:windos下fortran中一个程序里的module在编译后生成的xx.mod模块被别的程序use的时候是否要注意什么问题;我在编写中碰到了如下情况:
首先写了个含有module的程序:
第一个程序:
!CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
module global
implicit none
integer JJ,II,KK,MIDM,IIB,time
common JJ,II,KK,MIDM,IIB,time
!!!!!!!JJ=====>J(纬度)方向上的格点数
!!!!!!!II=====>I(经度)方向上的格点数
!!!!!!!KK=====>Z(高度)方向上的层数
!!!!!!!IIB====>时次数
!!!!!!!MIDM===>站点个数
!!!!!!!time===>资料的时间的长度
real QP,PARR,CTLS
common QP,PARR,CTLS
!!!!!!!QP ====>用于判断是否有降水的阈值
real lat_sta,lat_end,lon_sta,lon_end,dx,dy
common lat_sta,lat_end,lon_sta,lon_end,dx,dy
!!!!!!!起始经纬度!!!!!!!
!!!lat_sta ====> 起始纬度!!!
!!!lat_end ====> 终止纬度!!!
!!!lon_sta ====> 起始经度!!!
!!!lon_end ====> 终止经度!!!
CHARACTER*18 LOGO
common LOGO
!!!!!!!LOGO ===>产品的标志或文件名命名的排头
contains
!!!!!!!!!!!!!!!此部分用来从文件中读取变量值!!!!!!!!!!!!!!
subroutine constant
implicit none
!!!!!声明从配置文件中读取变量值的变量!!!!!
integer stat,i
real const
character*80 itt,cdt
!!---Part1:从配置文件中读取空间信息和公共变量值---!!
open(10,file='scheme.txt')
do while(.true.)
read(10,'(A80)',iostat=stat)itt
if(stat/=0)exit
if(itt(1:7)=="lon_sta")then
do i=8,80
if(itt(i:i)=='=')then
read(itt(i+1:80),*)lon_sta
endif
enddo
elseif(itt(1:7)=="lon_end")then
do i=8,80
if(itt(i:i)=='=')then
read(itt(i+1:80),*)lon_end
endif
enddo
elseif(itt(1:7)=="lat_sta")then
do i=8,80
if(itt(i:i)=='=')then
read(itt(i+1:80),*)lat_sta
endif
enddo
elseif(itt(1:7)=="lat_end")then
do i=8,80
if(itt(i:i)=='=')then
read(itt(i+1:80),*)lat_end
endif
enddo
elseif(itt(1:2)=="DX")then
do i=3,80
if(itt(i:i)=='=')then
read(itt(i+1:80),*)dx
endif
enddo
elseif(itt(1:2)=="DY")then
do i=3,80
if(itt(i:i)=='=')then
read(itt(i+1:80),*)dy
endif
enddo
elseif(itt(1:2)=="KK")then
do i=3,80
if(itt(i:i)=='=')then
read(itt(i+1:80),*)KK
endif
enddo
elseif(itt(1:4)=="LOGO")then
do i=5,80
if(itt(i:i)=='=')then
LOGO=TRIM(ADJUSTL(itt(i+1:80)))
endif
enddo
elseif(itt(1:2)=="QP")then
do i=3,80
if(itt(i:i)=='=')then
read(itt(i+1:80),*)QP
endif
enddo
elseif(itt(1:4)=="PARR")then
do i=5,80
if(itt(i:i)=='=')then
read(itt(i+1:80),*)PARR
endif
enddo
elseif(itt(1:4)=="CTLS")then
do i=5,80
if(itt(i:i)=='=')then
read(itt(i+1:80),*)CTLS
endif
enddo
elseif(itt(1:4)=="MIDM")then
do i=5,80
if(itt(i:i)=='=')then
read(itt(i+1:80),*)MIDM
endif
enddo
endif
enddo
close(10)
JJ=INT((lat_end-lat_sta)/DY)+1
II=INT((lon_end-lon_sta)/DX)+1
return
end subroutine constant
end module global
!CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
program main
xxxxxx
程序块
xxxxxx
end
此程序编译执行都没有问题;
然后我想在另一个程序中直接使用此mod块,
第2个程序111.f90:
program main
use global
implicit none
CALL CONSTANT
PRINT*,lat_sta,lat_end,jj,ii,lon_sta,lon_end
write(*,*)"The common constant is ok!"
end
compile的时候没有问题,但是build的时候出现了链接错误:
--------------------Configuration: 111 - Win32 Debug--------------------
Linking...
111.obj : error LNK2001: unresolved external symbol _GLOBAL_mp_CONSTANT@0
Debug/111.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
111.exe - 2 error(s), 0 warning(s)
这可能是什么问题,请教一下各位。
|
|