问题如下:
在VB里调用一个VC写的DLL中的函数,在VC里声明的原型如下:
BOOL EXPORT __stdcall WriteFlashData(unsigned char *mBuffer,int count)在VB里先声明
Private Declare Function WriteFlashData Lib "start.dll" (ByRef Buffer As Byte, ByVal count As Long) As Boolean调用:
Dim mBuffer(3) As Byte
mBuffer(1) = 2
mBuffer(2) = 3
mBuffer(0) = 4
Dim result As Boolean
result = WriteFlashData(mBuffer(0), 3)
发生“指令引用内存错误”
请各位大侠指点
在VB里调用一个VC写的DLL中的函数,在VC里声明的原型如下:
BOOL EXPORT __stdcall WriteFlashData(unsigned char *mBuffer,int count)在VB里先声明
Private Declare Function WriteFlashData Lib "start.dll" (ByRef Buffer As Byte, ByVal count As Long) As Boolean调用:
Dim mBuffer(3) As Byte
mBuffer(1) = 2
mBuffer(2) = 3
mBuffer(0) = 4
Dim result As Boolean
result = WriteFlashData(mBuffer(0), 3)
发生“指令引用内存错误”
请各位大侠指点
Private Declare Function WriteFlashData Lib "start.dll" (ByRef Buffer As long, ByVal count As integer) As Boolean
int--integer
Private Declare Function WriteFlashData Lib "start.dll" (ByRef Buffer As Long, ByVal count As Long) As Boolean调用改为
Dim mBuffer(3) As Byte
mBuffer(1) = 2
mBuffer(2) = 3
mBuffer(0) = 4
Dim result As Boolean
result = WriteFlashData(mBuffer, 3)结果编译错误
Private Declare Function WriteFlashData Lib "start.dll" (ByVal lpBuffer As long, ByVal count As integer) As Boolean然后调用的时候:
result = WriteFlashData(VarPtr(mBuffer(LBound(mBuffer))), 3)其实也就是强行传递指针啦~还有要注意的是,看你的代码你应该是想生成一个包含3元素的数组,应该是:
Dim mBuffer(2) as Bytevb里面缺省的数组下标是0!
不过按照realKK(KK.CHeN) 的方法,还是错误依旧啊
应该是realKK(KK.CHeN) 的方法最合理呀
为什么不行呢?看不出来有什么问题
我将DLL中的宏去掉就可以了。
但这个DLL在VC中调一点问题都没有。
莫名其妙的。
感觉VB版的同志都很热情。
谢谢你们的帮助。