【问题标题】:Pass multidimensional (safe)array from C# to COM将多维(安全)数组从 C# 传递到 COM
【发布时间】:2010-06-23 00:54:15
【问题描述】:

我有一个 COM 对象,它采用二维的 0 有界安全数组。我需要将此数组传递给我的 C++ COM 对象。我可以毫无问题地将 VB6 multidim 数组传递到 C++ 端,但我不知道如何在 C# 中设置它以便正确编组。有谁知道设置多维数组并将其传递给 COM 的步骤?

【问题讨论】:

  • 如何访问二维 Safearray?请举一个使用 SafeArrayAccessData 的例子。

标签: c# com interop safearray


【解决方案1】:

我很确定它应该按原样工作。只需确保您传递的是真正的二维数组,而不是锯齿状数组。换句话说,传递 arr[,] 而不是 arr[][]。

【讨论】:

    【解决方案2】:

    我认为您必须为您的 C++ COM dll 生成标准的 com 互操作(例如,将其添加为对您的 c# 项目的引用)。然后我认为 C# 应该正确地将标准 .Net(多维)数组编组为 com 安全数组。试试看吧:)

    【讨论】:

    • 不,它将它编组为一维数组,因为 IDL 只指定 SAFEARRAY*
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-02
    • 1970-01-01
    • 2021-04-16
    • 1970-01-01
    • 2013-02-19
    • 2018-07-28
    • 1970-01-01
    相关资源
    最近更新 更多