fortran在调用一个开源软件的dll时,发生错误,请大家指教。
fortran代码如下:
[Fortran] 纯文本查看 复制代码 module cprog
interface
integer function SWMMSTEP(elpTime)
!DEC$ ATTRIBUTES C, ALIAS:'swmm_step'::SWMMSTEP
!DEC$ ATTRIBUTES REFERENCE::elpTime
real(kind=8)::elpTime
end function
end interface
real(kind=8)::elpTime !全局变量
end module cprog
program F90useVCdll
use cprog
implicit none
integer::errorNum
do !do_01
errorNum=SWMMSTEP(elpTime)
if ((elpTime <= 0.0).or.(errorNum .ne. 0)) exit
enddo
end program
SWMMSTEP的c语言代码如下(DateTime就是double)[C] 纯文本查看 复制代码 int DLLEXPORT swmm_step(DateTime* elapsedTime)
{
...(代码太长)
*elapsedTime = NewRoutingTime / MSECperDAY;
return ErrorCode;
}
程序一开始可以运行,运行到一段时间就会出现以下错误,现在检查到主要是SWMMSTEP在do循环中发生问题,请大家指教。
|