各位,有没有人用过vc与FORTRAN 的混合编程啊??我作了一个例子,总是出错,麻烦大家帮忙看看!谢谢
qdljr 2008-07-08 02:22:00
!vc调用vf动态链接库文件
!例子为彭国伦书上的。只是想改为通过vc来调用。
subroutine TEST()
!DEC$ ATTRIBUTES DLLEXPORT::TEST
IMPLICIT NONE
INTEGER ,PARAMETER::FILEID=10
CHARACTER(LEN=20)::FILENAME="LIST.BIN"
INTEGER PLAYER
REAL::HIT(9)=(/3.2,2.8,2.2,6.1,5.5,4.5,2.3,1.2,1.8/)
OPEN(UNIT=FILEID,FILE=FILENAME,FORM="UNFORMATTED",ACCESS="DIRECT",
& RECL=1,STATUS="REPLACE")
DO PLAYER=1,9
!照下面的写法,此处总是报错,具体表现为vc调用时总是找不到动态链接库文件
WRITE(FILEID,rec=PLAYER)HIT(PLAYER)
ENDDO
CLOSE(FILEID)
!如果改为下面的形式则不会报错,不知道什么原因??,但已经不是二进制了...
! OPEN(UNIT=FILEID,FILE=FILENAME)
! DO PLAYER=1,9
! WRITE(FILEID,*)HIT(PLAYER)
! ENDDO
END
VC++调用代码
typedef void (_stdcall * wndProc)();
HINSTANCE hLibrary=LoadLibrary("test.dll");
if(hLibrary==NULL)
{
AfxMessageBox( "can't find the dll file");
}
wndProc test=(wndProc)GetProcAddress(hLibrary,"TEST");
if(test==NULL)
{
AfxMessageBox("can't find the function file");
}
test();