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竟然取不值,麻烦哪位大神解答??
...全文
310 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
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,而非你要的数组首地址。

111,098

社区成员

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

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

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