C++函数:
short WINAPI RFID_REC_GetTagData(HANDLE hCom, UCHAR RAddr,
UCHAR InTagCount, UCHAR *FinalGetTagCount, UCHAR *TagData,UCHAR *TagByteLen,UCHAR *AntNo, bool
bNeedClr);转成C#:
[DllImport(SDK_PATH,
EntryPoint = "RFID_ISO_SearchUID", CharSet = CharSet.Auto, CallingConventionCallingConvention.StdCall)]
public static extern
UInt16 RFID_REC_GetTagData(IntPtr hCom, UInt32 address,
Int32 [color=#FF0000]TaG_Count_want_to_get, ref Int32 Real_Get_Count, ref byte CardData, ref Int32 EveryTagLen, bool ant)[/color]TaG_Count_want_to_get 前不加 ref则报访问受保护内存错误,
加则对 PInvoke 函数“SRR_9151_DMOE!SRR_900X_SDK.SRR_900X_SDK_V13::RFID_REC_GetTagData”的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。
short WINAPI RFID_REC_GetTagData(HANDLE hCom, UCHAR RAddr,
UCHAR InTagCount, UCHAR *FinalGetTagCount, UCHAR *TagData,UCHAR *TagByteLen,UCHAR *AntNo, bool
bNeedClr);转成C#:
[DllImport(SDK_PATH,
EntryPoint = "RFID_ISO_SearchUID", CharSet = CharSet.Auto, CallingConventionCallingConvention.StdCall)]
public static extern
UInt16 RFID_REC_GetTagData(IntPtr hCom, UInt32 address,
Int32 [color=#FF0000]TaG_Count_want_to_get, ref Int32 Real_Get_Count, ref byte CardData, ref Int32 EveryTagLen, bool ant)[/color]TaG_Count_want_to_get 前不加 ref则报访问受保护内存错误,
加则对 PInvoke 函数“SRR_9151_DMOE!SRR_900X_SDK.SRR_900X_SDK_V13::RFID_REC_GetTagData”的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。
解决方案 »
- 如何用Webbrowser控件让下面的js代码不弹出IE窗口
- ocx控件使用问题?
- c#的方法重写和的java方法重写有什么区别
- 用c#编任意两个多项式相加
- 收藏 不显示删除回复显示所有回复显示星级回复显示得分回复 httpwebrequest如何获取目标网站的cookie
- combobox的未将对象的引用设置到对象的实例错误
- 用asp.net做网站,网站中需要一个进度条显示某个业务关注人的多少!!!求啊怎么做啊!!
- 不知道这个界面是怎么做出来的
- 想问有没有这样的函数:从网卡或外部接口模拟数据读入?
- 请高手指教 如何可以从一个类中的某一方法中 返回2个结果 说不可的请别发言
- TestDriven.NET 运行错误 Can't find assembly for project 'MyTest200'.
- 一个问题,关于正则表达式提取字符串的
把你的对应UCHAR的类型改成byte试试吧
RFID_REC_GetTagData(IntPtr hCom, UInt32 address,Int32 TaG_Count_want_to_get,
ref Int32 Real_Get_Count)不涉及到TagData 也会有这样的错误啊...
UCHAR* 对应 byte[]
//发送读单卡命令,读到卡后自动把卡号存入设备内部缓冲区
//apiStatus WINAPI RFID_ISO_SearchUID(HANDLE hCom,UCHAR RAddr,UCHAR* TagCount);
[DllImport(SDK_PATH,
EntryPoint = "RFID_ISO_SearchUID", SetLastError = true,
CharSet = CharSet.Unicode, ExactSpelling = true,
CallingConvention = CallingConvention.StdCall)]
public static extern UInt16 RFID_ISO_SearchUID(IntPtr hCom, UInt32 address, ref byte TaGCount);//传入串口句柄,输入,TaGCount为设备内部标签个数 #endregion
函数类型定义与原型不符合short<>int16