关于对象封送(Microsoft C#专家请进)

cdspace 2003-03-29 01:25:24
在C++接口定义
STDMETHODIMP AddData(
/*[in]*/ BYTE * inBuffer,
/*[in]*/ long inLength
);

在C#接口定义
[PreserveSig]
int AddData(
[In] ref byte inBuffer,long inLength );

在C#中调用
m_Interface.AddData (ref m_Buffer[0],inLength);

调用时错误:对象与目标类型不匹配

m_Interface已经创建成功

在UnmanagedType枚举中没有直接封送BYTE *这样的类型,而暂时不想使用SAFEARRAY

在C#中如何定义接口??

...全文
47 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
cdspace 2003-04-03
  • 打赏
  • 举报
回复
经过测试后发现,错误的原因并非是参数封送错误,而是因为得到m_Interface无法在delegate函数中被调用
在其他位置调用正常,但在delegate的函数中,其错误信息是QueryInterface失败,我推测是因为在delegate中,m_Interface的某些信息丢失了,该如来解决这个呢?

softwarejl 2003-03-29
  • 打赏
  • 举报
回复
marshal the struct send it use bytes
cherno 2003-03-29
  • 打赏
  • 举报
回复
没有直接封送BYTE *这样的类型,你还是使用SAFEARRAY

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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