首页 > 解决方案 > 如何使用 Mono Project 将 C/C++ 指针传递和保存到 C#,并将它们返回

问题描述

我在弄清楚如何有效地将 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# GameObject 类实例)

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

我想要实现的是 C++ 对象实例和实际 C# 表示之间的关系。这方面的信息很少,我有点迷茫。

标签: c#c++pointersmono

解决方案


经过一番尝试,我解决了我的问题:首先我将指针地址存储到一个字符缓冲区中,然后我将它作为一个整数数组 int [] 传递给单声道。这允许我的指针地址在 C# 环境中保持活动状态,并且我可以随时检索它。


推荐阅读