gpt4 book ai didi

c# - 将非托管类型结构指针转换为托管类型结构指针

转载 作者:行者123 更新时间:2023-11-28 07:49:43 62 4
gpt4 key购买 nike

考虑以下 C++ 结构,我需要使用 CLI 包装它以使其可用于 C#

typedef struct A
{
int b[5];
A* next;
};

我该怎么做?请帮忙。

非操作编辑:

我试过的是:

  public ref struct ANET 
{
array<int>^ b;
ANET^ next;
ANET()
{ b = gcnew array<int>(5) }
};

现在假设我们有一个A的对象指针是a,ANET的对象指针是aNET

nSize = sizeof(a->b)/sizeof(a->b[0]);
Marshal::Copy( IntPtr( ( void * ) a->b ), aNET->b, 0, nSize);

到目前为止,我能够在 aNET->b 中获取 a->b 的值,但我仍然坚持将 a->next 的指针编码到 aNET->next。

谢谢

最佳答案

这是一个链表。因此,一种选择是编写 C++/CLI 代码以使 native 链表适应 .net LinkedList<T> .沿着这条路线走下去意味着您需要在 native 代码中修改列表并需要将其返回到托管代码时复制列表。反之亦然。

如果制作拷贝不是一个选项,那么您应该将 native 链表包装在托管类中。所以你根本不要尝试转换结构定义。相反,您编写一个 C++/CLI 托管类来封装您需要公开的功能。我不能说更多,因为您没有提供任何关于您需要在此列表上执行的操作的信息。现在你解释了什么是数据流了吗。

关于c# - 将非托管类型结构指针转换为托管类型结构指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14101488/

62 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com