[c++] short ISO6B_ReadLabelID(int *handle, void ** Buffer, int *nCounter);

csShooter 2007-12-27 09:31:53
C++写的一个API:
short ISO6B_ReadLabelID(int *handle, void ** Buffer, int *nCounter);

我用C#怎么定义这个void **:
我这么定义:
public static extern short ISO6B_ReadLabelID(IntPtr handle, ref IntPtr Buffer, ref int nCounter);



对不,兄弟们!!
...全文
101 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
csShooter 2007-12-28
  • 打赏
  • 举报
回复
厂家提供的API肯定是没问题的!
只是C#转换我不知道void ** 怎么处理!
wenbin 2007-12-28
  • 打赏
  • 举报
回复
你用VC做下测试,看看,
csShooter 2007-12-28
  • 打赏
  • 举报
回复
使用out IntPtr buffer,出现:

尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
csShooter 2007-12-28
  • 打赏
  • 举报
回复
感谢!
csShooter 2007-12-27
  • 打赏
  • 举报
回复

请不使用不安全代码usafe...
csShooter 2007-12-27
  • 打赏
  • 举报
回复
csShooter 2007-12-27
  • 打赏
  • 举报
回复


送给大家过元旦!
up 有分
csShooter 2007-12-27
  • 打赏
  • 举报
回复


byte[] buffer = new byte[10*8];

IntPtr p = Marshal.AllocCoTaskMem(buffer.Length);
Marshal.Copy(p, buffer, 0, buffer.Length);
_res = RfidReaderApi.ISO6B_ReadLabelID(handle, ref p, ref nCounter); //报错:尝试读取或写入受保护的内存。这通常指示其他内存已损坏。

Marshal.Copy(p, buffer, 0, buffer.Length);



这个错误怎么解决?
真相重于对错 2007-12-27
  • 打赏
  • 举报
回复
try
void ** Buffer==> out Ptr
csShooter 2007-12-27
  • 打赏
  • 举报
回复
师兄们,让人太寒心了!

111,093

社区成员

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

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

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