C#接收C++结构体数组的问题???

「已注销」 2017-11-14 09:58:40
C#接收C++结构体数组的问题,代码如下:
typedef struct
{
int TerminalType;
int displayNum;
} MYOS , *MYOS;
//C++方法,MS为输出参数,输出MYOS数组
int lb_getTerminalInfos(MYOS * MS )


转为C#代码
public struct TerminalInfo{
public int TerminalType;
public int displayNum;

public class MyClass{
...
[DllImport("lb_sdk_universal.dll", EntryPoint = "lb_getTerminalInfos")]
public static extern int lb_getTerminalInfos(ref MYOS[] MS);
...
}

C#使用场景,调用如下:
MYOS[] ms=new MYOS[4];
int i=MyClass.lb_getTerminalInfos(ref ms);
但是这样,ms竟然取不值,麻烦哪位大神解答??
...全文
191 4 点赞 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Saleayas 2017-11-14
使用 structLayout 特性来描述结构。 使用 Marshal 方法来分配内存。
  • 打赏
  • 举报
回复
「已注销」 2017-11-14
更正一下: public struct TerminalInfo{ public int TerminalType; public int displayNum; } 应为: public struct MYOS{ public int TerminalType; public int displayNum; }
  • 打赏
  • 举报
回复
「已注销」 2017-11-14
多谢各位的支持,已完美解决!
  • 打赏
  • 举报
回复
改成public static extern int lb_getTerminalInfos(ref MYOS MS); 数组本来就是引用传递,传递的是地址,地址前面加ref其实表示的是传的地址的ref,而非你要的数组首地址。
  • 打赏
  • 举报
回复
相关推荐
发帖
C#
加入

10.6w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2017-11-14 09:58
社区公告

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