dll调用问题
主程序最开始定义了通道,例如
IURUN=1 ! run_data
IUGRD=3 ! model_grid (opened & closed in setdom.f)
IUTAS=5 ! init_tands (opened & closed in tands.f)
IUUAV=7 ! synop_wind (opened & closed in bcdata.f)
IURRS=9 ! restart (opened & closed in ecom3d.f)
调试时,在到达call sub1之前设置断点-go-将光标移到相应通道变量字符上(如上面的IURUN),显示正确(IURUN=1;IUGRD=3等);
但是点step info(F11)按钮,深入到子程序内部运行,这时再将光标移到相应通道变量字符上,就错了,全部通道变量都显示=0(如IURUN=0);
注:我是把子程序生成了dll加载运行的,下面是子程序中的一段代码,
OPEN(IUGRD,FILE='model_grid',status='old')
WRITE(IUPRT,51)
51 FORMAT(/'...... MODEL STARTING UP FROM INITAL CONDITIONS .......')
READ(IUGRD,11) (COM(I),I=1,80)
我的model_grid文件是已有文件。深入函数运行到open时正常--再往下到write,就不对了,程序重新生成一个model_grid,将已有文件覆盖掉,并写入了51的内容;再往下read就出错,没法读了
--------------------------这是什么问题呢?
是不是fortran调用dll时,main程序还必须写一个interface接口?那个dllimport指令必须写吗?写在哪里?
IURUN=1 ! run_data
IUGRD=3 ! model_grid (opened & closed in setdom.f)
IUTAS=5 ! init_tands (opened & closed in tands.f)
IUUAV=7 ! synop_wind (opened & closed in bcdata.f)
IURRS=9 ! restart (opened & closed in ecom3d.f)
调试时,在到达call sub1之前设置断点-go-将光标移到相应通道变量字符上(如上面的IURUN),显示正确(IURUN=1;IUGRD=3等);
但是点step info(F11)按钮,深入到子程序内部运行,这时再将光标移到相应通道变量字符上,就错了,全部通道变量都显示=0(如IURUN=0);
注:我是把子程序生成了dll加载运行的,下面是子程序中的一段代码,
OPEN(IUGRD,FILE='model_grid',status='old')
WRITE(IUPRT,51)
51 FORMAT(/'...... MODEL STARTING UP FROM INITAL CONDITIONS .......')
READ(IUGRD,11) (COM(I),I=1,80)
我的model_grid文件是已有文件。深入函数运行到open时正常--再往下到write,就不对了,程序重新生成一个model_grid,将已有文件覆盖掉,并写入了51的内容;再往下read就出错,没法读了
--------------------------这是什么问题呢?
是不是fortran调用dll时,main程序还必须写一个interface接口?那个dllimport指令必须写吗?写在哪里?