将托管的C ++类数组转换为C#

日本语

我有一个托管的C ++函数,它返回一个类数组:

托管的C ++代码:

public ref class Sample
{
public:
   double Open;
   double Close;
};

public ref class ManagedTest
{
  array<Sample^>^ ManagedTest::TestFunction()
  {
     //body
  }
};

TestFunction()在C#应用程序中被调用。Sample在C#中创建了相同的类,并尝试获取返回值。但是我收到有关转换的编译错误。

这是我的C#代码:

[StructLayout(LayoutKind.Sequential, Size = 100), Serializable]
public class Sample
{
public double Open;
public double Close;
}
//No. 100 I can manage, just written a random number

Sample[] randomValues = new Sample[100]; //Array of random numbers
GCHandle handle = GCHandle.Alloc(randomValues, GCHandleType.Pinned);
var randPtr = handle.AddrOfPinnedObject();
var test = new ManagedTest();
randPtr = test.TestFunction();

如何将该托管C ++类数组转换为C#one?

大卫·赫弗南(David Heffernan)

C ++代码定义了函数返回的类型。在C#代码中,您定义了另一种类型,与C#代码中使用的类型无关。您可以丢弃所有C#代码,而只需编写:

var test = new ManagedTest();
var randPtr = test.TestFunction();

就是这样。如果您想明确说明类型,则可以是:

ManagedTest test = new ManagedTest();
Sample[] randPtr = test.TestFunction();

请注意,您必须丢弃问题中的所有C#代码。在上面的摘录中,Sample是C ++程序集中定义的类型。

这是使用C ++ / CLI进行互操作的关键。编译器可以使用在其他程序集中声明的类型。这与p / invoke不同,在p / invoke中,您需要在两个程序集中定义类型并确保二进制布局匹配。通过C#和C ++ / CLI之间的互操作,您可以在一个程序集中定义类型,并直接在另一程序集中使用它们。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将 C++ 非托管代码转换为 C#

来自分类Dev

将XML转换为C#类

来自分类Dev

将DataTable转换为数组C#

来自分类Dev

将 VB 转换为 C#(数组)

来自分类Dev

将 PHP 数组转换为 C#

来自分类Dev

Unity C#:如何将类的数组转换为JSON

来自分类Dev

将类名称变量转换为类类型c#

来自分类Dev

如何将C ++类转换为托管类并在其中调用纯虚函数?

来自分类Dev

将数组的PHP数组转换为C#

来自分类Dev

从json转换为c#类对象

来自分类Dev

JSON 转换为 C# 或类

来自分类Dev

将字节数组从C转换为C#

来自分类Dev

C ++将二进制数组转换为类

来自分类Dev

C#将类转换为查询字符串

来自分类Dev

将复杂的json转换为c#类

来自分类Dev

将mashape api响应转换为c#类

来自分类Dev

使用DOTNET类将C#代码转换为Php

来自分类Dev

C#将json转换为多个类

来自分类Dev

用于将XML转换为C#类的工具

来自分类Dev

将引用转换为C#中的泛型类

来自分类Dev

将实例方法转换为类方法 C#

来自分类Dev

将泛型类转换为父 C#

来自分类Dev

将 XML 数据转换为 C# 类

来自分类Dev

将Javascript数组转换为C#列表

来自分类Dev

使用C#将CSV转换为多维数组

来自分类Dev

将返回类型转换为数组C#

来自分类Dev

将VB.Net数组转换为C#

来自分类Dev

将Datatables POST数组转换为C#模型

来自分类Dev

如何将Redis ArrayRedisResult转换为C#数组?