我的dll是用vc编写的,vc中的函数原型如下:
extern "C" bool WINAPI AnalysePAT(int startCount,PAT_TABLE PAT[])
{
if(!tsFile.AnalysePSI())
return false;
memcpy(PAT_table,tsFile.PAT,sizeof(tsFile.PAT_table));
return true;

}
结构体定义如下:
struct PAT_TABLE
{
unsigned int program_number;
unsigned int program_map_PID;
};
其中tsFile.PAT_table的定义是:PAT_TABLE PAT_table[256];用vb调用时的声明如下:
Public Declare Function AnalysePAT Lib "Mpeg2tsa" (ByVal startCount As Long, PAT() As PAT_TABLE) As Boolean
其中PAT_TABLE的定义如下:
Public Type PAT_TABLE
    program_number As Long
    program_map_PID As Long
End Type
用到dll的函数如下:
……
Dim PAT(255) As PAT_TABLE
Dim anaResult As Boolean
anaResult = AnalysePAT(patCount, PAT)
Next i
……
可是这样调用总是出问题,提示执行了非法操作;在vc中跟踪到memcpy一行,在监视窗口中查看PAT发现PAT并不是显示为数组。
请大虾帮忙解决,万分感谢!!