如何使用Mono Project将C/C++指针传递和保存到C#,并将其返回
How can I pass and save C/C++ pointers to C#, and return them back, using Mono Project
我遇到了一个严重的问题,弄清楚如何将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#表示之间的关系。关于这方面的信息很少,我有点不知所措。
我的建议:
新建一个具有StructLayout属性的.Net结构,如:
[StructLayout( LayoutKind.Explicit )]
public struct GameObject
{
[FieldOffset(0)]
public int Id;
......
}
则.net指针可以指向结构实例。
经过一番尝试,我解决了我的问题:首先,我将指针地址存储在一个char缓冲区中,然后将其作为int-int[]数组传递给mono。这允许我的指针地址在C#环境中保持活跃,并且我可以随时检索它。
相关文章:
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- 保存json文件后如何返回文件路径
- 如何调用返回双精度或字符串并将其保存在地图上但作为对象的类的方法
- 从保存变量数据类型的数据结构中检索值,而不指定返回类型
- 如何使用Mono Project将C/C++指针传递和保存到C#,并将其返回
- 在参数包中获取函数指针的返回类型,并将其保存为与其他参数连接的元组
- crypto++将密钥保存到字节队列并返回到密钥
- 如何保存返回的浮点数组指针
- 如何保存用户的整数输入,并返回字符串值?
- 方法,该方法调用所有基类的同名方法(如果存在),并将返回值保存到列表中
- 静态关键字保存函数返回的值
- 这很快:通过函数返回值或将值保存在参数/参数中
- C++ 返回保存在已删除的动态对象中的字符串
- OpenCV C++.返回垫子然后将其保存到文件
- 如何显示/保存返回AT命令的值
- ofstream-保存一个函数以返回一个txt
- 使用~时,QImage保存返回false
- 如何从c++返回对动态类型的引用并在Python中保存它?
- 如何返回PQXX连接并保存到其他变量
- 保存成员函数setf()的返回值