c#调用c++写的dll中函数,类型对应的问题

三五月儿 2015-09-18 10:05:24
函数原型
DWORD GETXXSTATUS(DWORD *mstatus)
参数
mstatus: [in/out] *mstatus表示状态值
这里的DWORD *与C#中的什么类型对应呢?
...全文
130 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
码农9078 2015-09-18
  • 打赏
  • 举报
回复
[System.Runtime.InteropServices.DllImportAttribute("<Unknown>", EntryPoint="GETXXSTATUS")] public static extern uint GETXXSTATUS(ref uint mstatus) ; 如果经常用C#调用C++的动态库的话 建议下载CLRInsideOut 托管代码与非托管转换
Poopaye 2015-09-18
  • 打赏
  • 举报
回复
引用 3 楼 tiana0 的回复:
[quote=引用 1 楼 shingoscar 的回复:] uint GetXXSTATUS([In,Out] ref uint mstatus)
DWORD * 能用byte[]接收吗[/quote] 理论上也是可以的,有些前提 1 你必须知道mstatus实际的长度 2 在c#里先定义好byte[],且长度不能小于mstatus的长度
三五月儿 2015-09-18
  • 打赏
  • 举报
回复
引用 1 楼 shingoscar 的回复:
uint GetXXSTATUS([In,Out] ref uint mstatus)
DWORD * 能用byte[]接收吗
江湖评谈 2015-09-18
  • 打赏
  • 举报
回复
dword 实质上就是unsigned long 相当于C#的 uint
Poopaye 2015-09-18
  • 打赏
  • 举报
回复
uint GetXXSTATUS([In,Out] ref uint mstatus)
crystal_lz 2015-09-18
  • 打赏
  • 举报
回复
引用 3 楼 tiana0 的回复:
[quote=引用 1 楼 shingoscar 的回复:] uint GetXXSTATUS([In,Out] ref uint mstatus)
DWORD * 能用byte[]接收吗[/quote] 那你把函数签名换成 byte[] 类型 然后传入 byte[4] 的一个数组就行了 然后BitConverter.ToInt32(byBuffer,0); 取出值
_小黑_ 2015-09-18
  • 打赏
  • 举报
回复
byte 或者 是 ushort

110,571

社区成员

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

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

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