托管C++程序集可以将对象返回给C#吗?

Jam*_*mes 5 c# managed-c++ c++-cli

我正在编写一个必须读取视频文件视频属性的C#应用​​程序.我发现这样做的唯一方法是使用需要C++的Microsoft Media Foundation.

到目前为止,我已经取得了一些进展:

  • 我已经创建了一个托管的C++程序集,它可以编译成DLL.
  • 我可以使用C#代码中的参数调用它.
  • 它执行并打印视频文件属性.

我接下来要做的是让DLL返回视频属性的对象(宽度,高度,持续时间等).鉴于我正在使用C++托管代码,是否有一种简单的方法来定义对象类型并使用它在C#和C++之间传递数据或者我是否必须使用Marshal类?

Pet*_*man 3

当然!如果您在托管 C++(也称为 C++/CLI)中定义公共对象:

public ref class MyManagedClass{
. . .
}
Run Code Online (Sandbox Code Playgroud)

然后从您的 c# 项目中引用该 dll,您将能够使用该对象,就像您在 c# 中定义它一样。