我在VC中编了一个DLL格式如下:
extern "C" void WINAPI EXPORT ymq (double x[], double y[],double a[],int n,int m)
{
//源文件
}
我在VB中声明:
Private Declare Function ymq Lib "ymq.dll" (ByRef x As Double, ByRef y As Double, ByRef a As Double, ByVal n As Integer, ByVal m As Integer)在VB中应用:
Dim x1(101) As Double
Dim y1(101) As Double
Dim a1(2) As Double
Dim k As Double
Dim i As Integer
For i = 0 To 100
x1(i) = -1# + 0.02 * i
y1(i) = 10 * x1(i)
Next
ymq x1, y1, a1, 101, 2 '在里有错误,说是参数BYREF错误.我搞不懂该怎样传递参数?
该成ymq x1(), y1(), a1(), 101, 2 '也有错误
把声明该成Private Declare Function ymq Lib "ymq.dll" (ByVAL x As Double, ByVAL y As Double, ByVAL a As Double, ByVal n As Integer, ByVal m As Integer
也有错误
我该怎么改? byval 与BYREF的区别是什么?谢谢大家!
extern "C" void WINAPI EXPORT ymq (double x[], double y[],double a[],int n,int m)
{
//源文件
}
我在VB中声明:
Private Declare Function ymq Lib "ymq.dll" (ByRef x As Double, ByRef y As Double, ByRef a As Double, ByVal n As Integer, ByVal m As Integer)在VB中应用:
Dim x1(101) As Double
Dim y1(101) As Double
Dim a1(2) As Double
Dim k As Double
Dim i As Integer
For i = 0 To 100
x1(i) = -1# + 0.02 * i
y1(i) = 10 * x1(i)
Next
ymq x1, y1, a1, 101, 2 '在里有错误,说是参数BYREF错误.我搞不懂该怎样传递参数?
该成ymq x1(), y1(), a1(), 101, 2 '也有错误
把声明该成Private Declare Function ymq Lib "ymq.dll" (ByVAL x As Double, ByVAL y As Double, ByVAL a As Double, ByVal n As Integer, ByVal m As Integer
也有错误
我该怎么改? byval 与BYREF的区别是什么?谢谢大家!
解决方案 »
- 在校生,想走网络编程路线,好么?
- 请大侠们指点:儿子上哪所大学更好?
- 我该从那本书开始看起,请高手帮忙为我做个书排序算法:)
- 数字滤波:一个波形由N个正弦波组成,怎样才能把正弦波中间的一些杂波滤掉或把它处理成正弦波的一个点?请问哪里有介绍数字滤波的网址?谢
- 关于数据库连接应用问题!
- 如何画一个斜的椭圆?
- 如何在CString中输出十六进制数据?
- 谁能跟我讲讲TEMPLATE
- 各位大虾,高分请教一个问题:汇编和高级语言的结合:如何才能在高级语言里用 INT 13 呢?使用 INT 13 的几个寄存器的值的问题。
- CDaoRecordset::GetRecordCount不是用来得到记录集中记录个数的吗?我的数据库中有500多条记录,我用这个函数怎么总是告诉我数据库中只有
- VC里面的对话框是怎么出来的?
- 很简单的问题
byref 表示传送的地址你的DLL 源码能发一份给我看看码[email protected]
VB调用dll要用byval
采用传引用方式byref,传递VB数组第一个元素即可!!
ymq x1(0), y1(0), a1(0), 101, 2
发现了问题。VB的DOUBLE 与VC的DOUBLE不能改换。该为VB(SINGLE)VC用(FLOAT)
发现VB的数据可以传给VC,但是VC不能给VB。大家再想想。
谢谢!