主题:[讨论]求教!vb与fortran的混合编程
scoot
[专家分:30] 发布于 2008-03-28 23:33:00
各位大侠:
小弟想实现在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 楼
qifang [专家分:0] 发布于 2008-04-09 08:00:00
再次感谢
我明白你的意思
可是我在fortran里的程序运行要有十几分钟,而且不同的参数对应不同的时间长度,如果那样的话(我还不太清楚如何读),我读取Data数据会不会在时间上出错呢?
请问你是怎么读取的数据文件,谢谢你了
12 楼
qifang [专家分:0] 发布于 2008-04-09 15:31:00
请问各位高手,我在调用Fortran时出现了溢出死机的现象,这该怎么处理啊?
13 楼
scoot [专家分:30] 发布于 2008-04-09 18:45:00
你好!首先,只要你读取文件的格式设置对了,在调用时是不会出错的。其次是你第二个问题,可能是你在读取数据时出了差错,检查你所定义的数组维数,或许能解决问题吧。
14 楼
qifang [专家分:0] 发布于 2008-04-09 20:01:00
谢谢你,问题还在解决中,我重新试了一下,用数组实现简单功能,结果回调的数组运算结果是正确的,可是应用到我的程序上还是出错,我在想会不会是我的Fortran程序运行时间太长了?
15 楼
scoot [专家分:30] 发布于 2008-04-10 10:03:00
那应该不是时间上的问题了。还是检查检查你的程序吧
16 楼
qifang [专家分:0] 发布于 2008-04-10 20:14:00
楼主好,之前的问题还是没解决。不过很感谢你。
我想问一下,你是如何调用*.dat文件里的数组的。我用的是:
Open"c:\aa\ab.dat" For Inout As #1
Input #1,Arry(1),Arry(2),Arry(3),Arry(4)……可是我的数组有2000多个元素,用什么语句可以一次读取数据到一个数组变量里呀?
麻烦你了!
17 楼
scoot [专家分:30] 发布于 2008-04-10 20:52:00
你试着用循环吧
18 楼
qifang [专家分:0] 发布于 2008-04-12 08:50:00
楼主你好,我知道是因为什么溢出了,主要是我调用的Fortran函数里有太多太大的数组,Vb的堆栈放不下了。他们说可以试试多线程,但我不是很清楚Vb中的线程如何设定。
十分感谢楼主在这段时间给予我的帮助。如果问题最终解决了,我会和大家分享的。
19 楼
maisui [专家分:0] 发布于 2008-06-19 09:30:00
楼主你好,我现在用VB和FORTRAN混合编程,也遇到一个困难.
我要在vb中将输入的字符串处理成一个自定义函数,然后在FORTRAN中进行计算,怎样来实现呀.
20 楼
scoot [专家分:30] 发布于 2008-06-21 16:52:00
简化来说也就是在vb程序中调用fortran所生成的dll文件。你要能够正确做到调用dll文件,这个问题就好办了。这个问题处理好后,还要注意一个问题,那就是你需设定自定义函数的格式,也就是输入输出格式。
我来回复