回 帖 发 新 帖 刷新版面

主题:[讨论]求教!vb与fortran的混合编程

各位大侠:
     小弟想实现在vb环境下调用fortran程序。但我用compaq fortran v6.6 生成的dll文件在vb环境中调用时,出现如下错误“error dll calling convention”。请大侠给予指教。十分感谢!附程序如下
fortran程序:
    subroutine TESTED(a,b,c)
!DEC$ ATTRIBUTES DLLEXPORT::TESTED
    real a,b,c
    c=a+b
    return
    end 
vb程序:
Private Declare Sub TESTED Lib "D:\STUDY\FortranAndVB\TESTED\Debug\TESTED.dll" (vba As Single, vbb As Single, vbc As Single)
Private Sub Command1_Click()
Dim vba As Single
Dim vbb As Single
Dim vbc As Single
vba = 15
vbb = 12
'vbc = vba + vbb
Call TESTED(vba, vbb, vbc)
Text1.Text = vbc
End Sub

----期待中。。。。

回复列表 (共20个回复)

11 楼

再次感谢
我明白你的意思
可是我在fortran里的程序运行要有十几分钟,而且不同的参数对应不同的时间长度,如果那样的话(我还不太清楚如何读),我读取Data数据会不会在时间上出错呢?
请问你是怎么读取的数据文件,谢谢你了

12 楼

请问各位高手,我在调用Fortran时出现了溢出死机的现象,这该怎么处理啊?

13 楼

你好!首先,只要你读取文件的格式设置对了,在调用时是不会出错的。其次是你第二个问题,可能是你在读取数据时出了差错,检查你所定义的数组维数,或许能解决问题吧。

14 楼

谢谢你,问题还在解决中,我重新试了一下,用数组实现简单功能,结果回调的数组运算结果是正确的,可是应用到我的程序上还是出错,我在想会不会是我的Fortran程序运行时间太长了?

15 楼

那应该不是时间上的问题了。还是检查检查你的程序吧

16 楼

楼主好,之前的问题还是没解决。不过很感谢你。
    我想问一下,你是如何调用*.dat文件里的数组的。我用的是:
    Open"c:\aa\ab.dat" For Inout As #1
    Input #1,Arry(1),Arry(2),Arry(3),Arry(4)……可是我的数组有2000多个元素,用什么语句可以一次读取数据到一个数组变量里呀?
    麻烦你了!

17 楼

你试着用循环吧

18 楼

楼主你好,我知道是因为什么溢出了,主要是我调用的Fortran函数里有太多太大的数组,Vb的堆栈放不下了。他们说可以试试多线程,但我不是很清楚Vb中的线程如何设定。
    十分感谢楼主在这段时间给予我的帮助。如果问题最终解决了,我会和大家分享的。

19 楼

楼主你好,我现在用VB和FORTRAN混合编程,也遇到一个困难.

我要在vb中将输入的字符串处理成一个自定义函数,然后在FORTRAN中进行计算,怎样来实现呀.

20 楼

简化来说也就是在vb程序中调用fortran所生成的dll文件。你要能够正确做到调用dll文件,这个问题就好办了。这个问题处理好后,还要注意一个问题,那就是你需设定自定义函数的格式,也就是输入输出格式。
  

我来回复

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