【发布时间】:2012-08-21 21:48:16
【问题描述】:
我正在尝试将 .NET 数组传递给 COM VB6 库。我有一个对象,它是 VB6 对象的 COM 包装器。它具有具有以下签名的方法:
[MethodImpl(MethodImplOptions.InternalCall,
MethodCodeType = MethodCodeType.Runtime)]
void AddEx([MarshalAs(UnmanagedType.Struct)] object vSafeArrayOfItems);
但是当我调用它时,我会收到带有以下消息的ArgumentException:
值不在预期范围内。
异常的类型及其描述甚至不依赖于传递的元素。
有人知道如何解决这个问题吗?
UPD:我删除了 .NET 包装程序集和引用的源 .COM 库。没有发生任何变化。
【问题讨论】:
-
[MarshalAs] 属性显然是错误的。
-
同意。 @user1453239 为什么你认为它是一个结构体?
-
此声明来自我正在尝试使用的库。由第三方开发商提供。
-
数组包含什么DataType?简单的数据类型,如字符串/整数或对象?
标签: c# arrays com vb6 marshalling