主题:vb高手请帮帮忙吧!5555
zhangjingqazwsx
[专家分:0] 发布于 2010-04-19 13:30:00
我通过dll将vb和Fortran结合起来。首先在Fortran里的程序已编译成dll文件,subroutine DIAODU(a,q1,q2,Y)为Fortran里函数的第一行。然后在vb里声明,听说是在模块里声明,我就添加了一个新的模块,然后在里面声明:Private Declare Sub DIAODU Lib "F:\aaa\Debug\aaa.dll" Alias "_DIAODU@16" (a As Single, q1 As Single, q2 As Single, y As Single)。最后在vb里调用:Call DIAODU(a, q1, q2, y(1))。请问为什么我这样做了,运行时还说我子函数未定义呢?请各位大侠帮帮忙~~
[em12]
回复列表 (共6个回复)
板凳
天天学习 [专家分:4570] 发布于 2010-04-20 11:01:00
1、函数在模块里声明为private,所以只能在同一模块内调用
2、y是数组,函数声明的参数类型也不对吧。
3 楼
zhangjingqazwsx [专家分:0] 发布于 2010-04-20 21:02:00
我看了相关的学术论文,他们都说在申明时数组参数要用数组的第一个数作为参数传递;
我把private改成public,运行的结果怎么还是说用户类型未定义啊。。。
4 楼
老大徒伤悲 [专家分:29120] 发布于 2010-04-22 19:33:00
既然y是数组,声明应当是:
Private Declare Sub DIAODU Lib "F:\aaa\Debug\aaa.dll" Alias "_DIAODU@16" (a As Single, q1 As Single, q2 As Single, y() As Single)
调用应当是:
DIAODU a, q1, q2, y
不要迷信书,书上很多错误,尤其是翻译书籍。
6 楼
zhangjingqazwsx [专家分:0] 发布于 2010-04-24 21:34:00
还有一个,请问下,在vb里怎么定义label型的数组啊?
我来回复