回 帖 发 新 帖 刷新版面

主题:vb高手请帮帮忙吧!5555

我通过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个回复)

沙发

Y是数组哦~~

板凳

1、函数在模块里声明为private,所以只能在同一模块内调用
2、y是数组,函数声明的参数类型也不对吧。

3 楼

我看了相关的学术论文,他们都说在申明时数组参数要用数组的第一个数作为参数传递;
我把private改成public,运行的结果怎么还是说用户类型未定义啊。。。

4 楼

既然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
不要迷信书,书上很多错误,尤其是翻译书籍。

5 楼

谢谢你哦!万分感谢!

6 楼

还有一个,请问下,在vb里怎么定义label型的数组啊?

我来回复

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