C#和C++混合编程 用类代替结构体来封装数据 传参如何实现

zmidl 2020-02-01 01:59:10
之前用结构体ok的 CPP代码

struct MyStruct
{
int Width;
int Height;
};

extern "C" _declspec(dllexport)int Add(MyStruct myStruct)
{
return myStruct.Width + myStruct.Height;
}


然后上位机 CSharp代码

[StructLayout(LayoutKind.Sequential)]
public struct MyStruct
{
public int Width { get; set; }
public int Height { get; set; }
}

[DllImport("OpenCvHelper.dll")]
public static extern int Add([MarshalAs(UnmanagedType.Struct)] MyStruct myStruct);



由于数据结构需要被引用 所以上位机希望用类来封装数据,这样的话如何实现呢?下位机是不是也要用类?还是说有什么方式可以转换一下?
只有这点分数了,希望有经验的指点一下谢谢。
...全文
279 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
github_36000833 2020-02-02
  • 打赏
  • 举报
回复
传class和struct的区别就是传‘引用’和‘值’的区别。 要在C#方传class,C++要接收引用。 extern "C" _declspec(dllexport)int Add(const MyStruct& myStruct) { return myStruct.Width + myStruct.Height; }
zmidl 2020-02-01
  • 打赏
  • 举报
回复
好像微软提到过 只能用结构体,无法使用类。
进来看过帖子的朋友留个言吧,送分 了!

110,571

社区成员

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

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

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