我用vb调用fortran  
刚开始一直说找不到文件  我的字符串传递过去就是文件名
我输入10080120.012
用str()时候好像是对的  但是文件名变成\ 10080120.01了
用cstr或者format时候就直接说“DLL调用约定错误”  不知道什么问题 求高手帮助.
Private Declare Function Srhba Lib "F:\zy2\srhba\Debug\srhba.dll" (ByVal day As String) As SinglePrivate Sub Command1_Click()Dim Jz As Single
Dim day As String
day = cstr(Text1.Text)
Jz = Srhba(day)Text3.Text = Str(Jz)End Sub

解决方案 »

  1.   

    ·VB将数据写到一个临时文件比如in.txt中
    ·VB用Shell语句调用Fortran写的exe文件
    ·Fortran程序从文件in.txt中读取数据,处理后写入out.txt文件中
    ·VB读文件out.txt的内容处理
      

  2.   

    将函数返回类型定义为字符或Double型,Single型的转后会产生这个问题 
      

  3.   

    前面用一个没有变量的Srhba()试验过,没有问题,能顺利调用,后面因为要读数据问题,就设置了一个字符串变量,传递文件名,但是不知道为什么,老是出现“DLL调用约定错误”,无法解决。
      

  4.   

    我把single改成double了  但是还是有同样问题。
      

  5.   

    dll是在fortran中自己生成的。
    这是fortran的开头和结尾
    real function srhba(day)!DEC$ ATTRIBUTES DLLEXPORT :: SRHBA
    !DEC$ ATTRIBUTES ALIAS : "Srhba" :: SRHBA

    integer xdim,ydim,zdim,ii
    real pi
    parameter(xdim=151,ydim=99,zdim=5,pi=3.1415)
    real u(xdim,ydim,zdim),v(xdim,ydim,zdim),SRH(2,2)
          real sum,ang,cx,cy,cxy,x1ba,x2ba,y1ba,y2ba
    character*12 day
    !data day/'10080120.012'/
    character*3 ip(zdim)
    data ip/'000','850','700','500','300'/
    sum=0.0
    x1ba=0.0
    x2ba=0.0
    y1ba=0.0
    y2ba=0.0
    SRHba=0.0
             。
              。
              。
              x1ba=SRH(1,1)+0.32*(SRH(2,1)-SRH(1,1))
    x2ba=SRH(1,2)+0.32*(SRH(2,2)-SRH(1,2))
      y1ba=SRH(1,1)+0.18*(SRH(1,2)-SRH(1,1))
    y2ba=SRH(2,1)+0.18*(SRH(2,2)-SRH(2,1))
    SRHba=(x1ba+x2ba+y1ba+y2ba)/4.0
            close(1)
    close(2)
            return
    end function