【发布时间】:2012-09-14 05:34:54
【问题描述】:
我正在尝试将从 c# 库导出的结构数组传递给 c++ 代码。目标是将结构的 SAFEARRAY 从 c++ 传递到 c#。
我已按照
的指示进行操作但调用 GetRecordInfoFromTypeInfo 时出现此错误
0x80028019 旧格式或无效类型库。
【问题讨论】:
-
这没有帮助(stackoverflow.com/questions/12503041/…)有什么原因吗?你真的需要一个 SAFEARRAY 吗?它必须是一个结构吗?需要实现dispatch接口吗?
-
之前的尝试是将结构从 C# 传递到 c++,而现在我正在做相反的事情。 LPArray 编组的问题在于它仅编组数组中的一个元素,并且可变长度数组未绑定到 C# 签名中定义的数组。所以我不得不将 marshall 改为 Safearray。请让我知道以前的方法是否有效。
-
那么这部分有点令人困惑:“我正在尝试将从 c# 库导出的结构数组传递给 c++ 代码”。我很惊讶 LPArray 只编组一个元素(从非托管到托管)
-
为方便起见,我使用 c# 代码定义了所有结构。我正在使用 c++ 中的那些结构。在第一种情况下,我从 C++ 获取结构,现在我将结构推入 C#。当我这样做时,我将它编组为 LPArrary 并在 C# 签名中声明为 MyStruct[] mystruct 但只有一个元素被传递。我可以通过设置 sizeconst 属性发送多个元素,但它会被硬编码。将由 c++ 填充的结构传递给 c# 的任何方式。
-
有什么想法吗?感谢您的帮助。