回 帖 发 新 帖 刷新版面

主题:vc++中调用Fortran写的dll的问题。

Fortran中的函数:
SUBROUTINE AUSGAB(IARG)
    !DEC$ ATTRIBUTES DLLEXPORT : : AUSGAB

      implicit none
      integer*4 IARG
      real*8 EKINE, ANGLE
      COMMON/STACK/ E(15),X(15),Y(15),Z(15),U(15),V(15),W(15),DNEAR(15),
     *WT(15),IQ(15),IR(15),LATCH(15), LATCHI,NP,NPold
      DOUBLE PRECISION E
      real*8 X,Y,Z,  U,V,W,  DNEAR,  WT
      integer*4 IQ,  IR,  LATCH,  LATCHI, NP,  NPold
      IF ((IARG .EQ. 3)) THEN
        ANGLE=ACOS(W(NP))*180./3.14159
        IF ((IQ(NP) .EQ. 0)) THEN
          EKINE=E(NP)
        ELSE
          EKINE=E(NP)-0.511
        END IF
        WRITE(6,1070)EKINE,IQ(NP),ANGLE
1070    FORMAT(T21,F10.3,T33,I10,T49,F10.1)
      END IF
      RETURN
      END

我做成dll后,在vC++中想要调用这个函数改怎么写啊?帮帮忙啊!

回复列表 (共1个回复)

沙发

扩展名如果是cpp的话
把fortran里的!DEC$ ATTRIBUTES DLLEXPORT : : AUSGAB
改成!DEC$ ATTRIBUTES C,DLLEXPORT : : AUSGAB
cpp里加入
extern "C"{_cdecl AUSGAB(int IARG);}  //大小写不记得了,可以查看obj的导出符号
然后就可以在main里调用AUSGAB(IARG)  //大小写同上

我来回复

您尚未登录,请登录后再回复。点此登录或注册