我遇到了一個嚴重的問題,弄清楚如何有效地傳遞和存儲指向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# 表示形式之間的關系。關于這方面的信息很少,我有點迷茫。
2 回答

明月笑刀無情
TA貢獻1828條經驗 獲得超4個贊
經過一些嘗試,我解決了我的問題:首先,我將指針地址存儲到char緩沖區中,然后將其作為int[]的數組傳遞給mono。這使我的指針地址在 C# 環境中保持活動狀態,并且我可以隨時檢索它。

慕妹3146593
TA貢獻1820條經驗 獲得超9個贊
我的建議:
新建一個具有StructLayout屬性的.Net結構,例如:
[StructLayout( LayoutKind.Explicit )]
public struct GameObject
{
[FieldOffset(0)]
public int Id;
......
}
則 .net 指針可以指向結構實例。
- 2 回答
- 0 關注
- 115 瀏覽
添加回答
舉報
0/150
提交
取消