如何传递和保存的C / C ++指针和C#,并返回他们回来,用Mono项目

问题描述 投票:0回答:2

我有一个严重的问题搞清楚如何传递和有效C指针存储到C#,然后返回他们回来时,我需要他们使用Mono。我建立一个脚本层与C#对C ++的顶部。例如(伪代码):

C ++:

GameObject* owner = new GameObject();
void* args[1] = {owner};
return_object = mono_runtime_invoke("InitReference", mono_object, args, &exception);

C#(C#游戏对象类实例)

public IntPtr InitReference(IntPtr game_object_ptr)
{
    return game_object_ptr;
}

我想实现的是C ++对象实例和实际的C#代表之间的关系。有关于这一点的信息,我有点失落。

c# c++ pointers mono
2个回答
0
投票

我的建议: 新建一个.net结构具有StructLayout属性,如:

[StructLayout( LayoutKind.Explicit )]
public struct GameObject
{
  [FieldOffset(0)]
  public int Id;
  ......
}

那么.NET指针可以指向结构实例。


0
投票

一些尝试后,我解决我的问题:首先,我存储在我的指针地址转换成字符缓冲区,然后我通过它为单声道的整数的INT []数组。这让我的指针ADRESS在C#环境下生存,我能找回它,每当我想要的。

© www.soinside.com 2019 - 2024. All rights reserved.