fortran错误:the type of the actual argument differs from the type of the dummy argument

参考原文:https://blog.csdn.net/SinjoyWong/article/details/70138960 

在用intel fortran写一个DLL程序的时候,发现数据结构比较复杂,所以使用了fortran90中新增的结构体。因为abaqus只能识别.for格式的文件,一开始以为fortran77是无法使用结构体的。 
在写的过程中,直接将结构体对象的名称作为子程序的形参。一直报错,表示实参与形参的类型不统一。 
在确认语法没错之后,在网上查找了很长时间,但是除了语法层面外仍没有解释。后来有人建议将Debug改为Release,遂尝试之,顺利通过。 

---------------------------------------------------

我的经验:想编译一个dll给VBNET调用

----------------------------------------------------

      SUBROUTINE SAP(NJ,N,NE,NPJ,NPF,JN,X,Y,JE,JEAI,EAI,JPJ,PJ,JPF,PF,F,FM)
!*********     ANALYSIS PROGRAM FOR PLANE FRAME       ****************
      !MS$ATTRIBUTES DLLEXPORT,STDCALL,ALIAS:'PFSAP' :: PFSAP
      !DEC$ ATTRIBUTES VALUE :: NJ,N,NE,NPJ,NPF
      !DEC$ ATTRIBUTES REFERENCE :: JN,JE,JEAI,JPJ,JPF
      !DEC$ ATTRIBUTES REFERENCE ::X,Y,EAI,PJ,PF,F,FM

      INTEGER(4),INTENT(IN) :: NJ,N,NE,NPJ,NPF
      INTEGER(4),INTENT(IN) :: JN(3,100),JE(2,100),JEAI(100),JPJ(100),JPF(2,100)
      REAL(8),INTENT(IN) :: X(100),Y(100),EAI(3,100),PJ(100),PF(2,100)
      REAL(8),INTENT(OUT) :: F(100,3),FM(100,6)

后面程序中的变量都定义为INTEGER或 REAL

编译报错
错误        error #6633: The type of the actual argument differs from the type of the dummy argument.   [Y]        J:\Recent\VB\WindowsApp1\PlaneFrame\PlaneFrame.f90    19    

将红色代码改为:(删除 (8)

      REAL,INTENT(IN) :: X(100),Y(100),EAI(3,100),PJ(100),PF(2,100)
      REAL,INTENT(OUT) :: F(100,3),FM(100,6)

再编译 则成功

分析:主要是因为上下文中的变量定义不一致

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yueliang2100

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值