vc中的结构是这样的
typedef struct ImageInfoStruct{
int imageH;
int imageW;
unsigned char *imageData;
}ImageInfo
vb中对应的结构是这样的
Public Structure ImageInfo
Public imageH As Int32
Public imageW As Int32
Public imageData() As byte
End Structure
下面是我在vb中的引用
Public Declare Function process Lib "process .dll" Alias "ProcessImage" _
(ByRef pImages As ImageInfo, ByRef numIm As Integer) As Integer
下面是vb中调用的语句
sInfo.imageH = 480
sInfo.imageW = 640
ReDim sInfo.imageData(307199)
.......读了一幅图片
i = ProcessImage(sInfo, 1)
跟踪调试dll进去以后,发现数值型的参数都能得到正确的值,但是存储图片的数组确没能把图片传递过去,请问怎么解决这个问题?
typedef struct ImageInfoStruct{
int imageH;
int imageW;
unsigned char *imageData;
}ImageInfo
vb中对应的结构是这样的
Public Structure ImageInfo
Public imageH As Int32
Public imageW As Int32
Public imageData() As byte
End Structure
下面是我在vb中的引用
Public Declare Function process Lib "process .dll" Alias "ProcessImage" _
(ByRef pImages As ImageInfo, ByRef numIm As Integer) As Integer
下面是vb中调用的语句
sInfo.imageH = 480
sInfo.imageW = 640
ReDim sInfo.imageData(307199)
.......读了一幅图片
i = ProcessImage(sInfo, 1)
跟踪调试dll进去以后,发现数值型的参数都能得到正确的值,但是存储图片的数组确没能把图片传递过去,请问怎么解决这个问题?
如果你在的结构定义在 VB6 中,imageData 是一个 SAFEARRAY* 指针,所以应该定义成指针类型,然后将其指向数组的第一个成员;
VS.2005 没试过,不过应该是相同的道理。以下为 VB6 的调用方式:
Option ExplicitPublic Declare Function process Lib "process .dll" Alias "ProcessImage" _
(ByRef pImages As ImageInfo, ByRef numIm As Integer) As Integer
Public Type ImageInfo
imageH As Long
imageW As Long
imageData As Long
End TypeSub Main()
Dim sInfo As ImageInfo
Dim aData() As Byte
ReDim aData(307199)
sInfo.imageH = 480
sInfo.imageW = 640
sInfo.imageData = VarPtr(aData(0))
.......读了一幅图片
i = ProcessImage(sInfo, 1)
End Sub
Public Structure ImageInfoStruct
Public imageH As Integer
Public imageW As Integer
Public imageData As IntPtr
End StructureDim data() As Byte
sInfo.imageH = 480
sInfo.imageW = 640
ReDim data(307199)
sInfo.imageData = Marshal.UnsafeAddrOfPinnedArrayElement(data, 0)i = ProcessImage(sInfo, 1)