问题描述
函数原型DWORDGETXXSTATUS(DWORD*mstatus)参数mstatus:[in/out]*mstatus表示状态值这里的DWORD*与C#中的什么类型对应呢?
解决方案
解决方案二:
uintGetXXSTATUS([In,Out]refuintmstatus)
解决方案三:
dword实质上就是unsignedlong相当于C#的 uint
解决方案四:
引用1楼shingoscar的回复:
uintGetXXSTATUS([In,Out]refuintmstatus)
DWORD*能用byte[]接收吗
解决方案五:
引用3楼tiana0的回复:
Quote: 引用1楼shingoscar的回复:
uintGetXXSTATUS([In,Out]refuintmstatus)DWORD*能用byte[]接收吗
理论上也是可以的,有些前提1你必须知道mstatus实际的长度2在c#里先定义好byte[],且长度不能小于mstatus的长度
解决方案六:
[System.Runtime.InteropServices.DllImportAttribute("<Unknown>",EntryPoint="GETXXSTATUS")]publicstaticexternuintGETXXSTATUS(refuintmstatus);如果经常用C#调用C++的动态库的话建议下载CLRInsideOut托管代码与非托管转换
解决方案七:
byte或者是ushort
解决方案八:
引用3楼tiana0的回复:
Quote: 引用1楼shingoscar的回复:
uintGetXXSTATUS([In,Out]refuintmstatus)DWORD*能用byte[]接收吗
那你把函数签名换成byte[]类型然后传入byte[4]的一个数组就行了然后BitConverter.ToInt32(byBuffer,0);取出值
时间: 2024-10-26 00:57:56