一个vb和dll之间机构体的传值问题

xysome 2003-09-02 11:06:04
我的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并不是显示为数组。
请大虾帮忙解决,万分感谢!!
...全文
27 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
eastcent 2004-03-06
  • 打赏
  • 举报
回复
用指针。
xysome 2003-09-04
  • 打赏
  • 举报
回复
如果传数组的话,应该怎样传呢?
xysome 2003-09-03
  • 打赏
  • 举报
回复
SAFEARRAY是什么?我在MSDN中查了一下,还是不明白…楼上的能不能再说详细点,谢谢!!
xysome 2003-09-03
  • 打赏
  • 举报
回复
大虾们帮忙啊。。。
Analyst 2003-09-02
  • 打赏
  • 举报
回复
VB的数组和VC是不一样的,试试SAFEARRAY

15,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧