gpt4 book ai didi

c# - 如何将对象数组传递给非托管代码?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:00:22 25 4
gpt4 key购买 nike

我正在尝试将对象数组从 C# 传递到非托管 C++,但似乎没有任何效果。

编译器不会让我假装数组是一个 IntPtr。将数组转换为 IntPtr 不起作用。我试过传递固定数据的地址,但这也没有用。

我只需要传递一个指向数组开头的指针,事实证明这非常困难。

有什么建议或链接吗?谢谢!

最佳答案

最终起作用的是:

  1. 传递结构数组而不是对象数组(引用)。
  2. 将“[StructLayout(LayoutKind.Sequential, Pack = 1)]”放在结构定义之前。
  3. 将“[MarshalAs(UnmanagedType.LPWStr)]”放在字符串之前(在结构定义中),使该字符串在 C++ 端显示为宽字符字符串。
  4. 为 DllImport 声明中的参数声明一个结构数组:“VariableObject[] varObj”。
  5. 在 C++ 端声明一个指向类的指针作为参数。 (C++ 类反射(reflect)了 C# 结构。):“VariableObject* varObj”。

关于c# - 如何将对象数组传递给非托管代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3215233/

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