C++ 将ref对象数组从.net传递到COM服务器
我正试图从vb6转换到vb.net,我面临一个棘手的问题 我必须从vb.net向COM服务器传递一个引用数组对象,但传递的数组对象的变体类型具有VT_分派,仅VT_数组。但是,我也需要一个VB_BYREF 下面是COM服务器上的一个方法C++ 将ref对象数组从.net传递到COM服务器,c++,.net,com,vb6,marshalling,C++,.net,Com,Vb6,Marshalling,我正试图从vb6转换到vb.net,我面临一个棘手的问题 我必须从vb.net向COM服务器传递一个引用数组对象,但传递的数组对象的变体类型具有VT_分派,仅VT_数组。但是,我也需要一个VB_BYREF 下面是COM服务器上的一个方法 void myCOMSub ( Variant FAR* oArray ) { if ( (VT_DISPATCH | VT_ARRAY | VT_BYREF) == oArray->vt )
void myCOMSub ( Variant FAR* oArray )
{
if ( (VT_DISPATCH | VT_ARRAY | VT_BYREF) == oArray->vt )
// success
else
// fail
}
这是转换前的vb6代码
Dim oOutputArray() As Object
MyComApp.myComSub(oOutputArray)
没有问题,oArray的变体类型总是有3种类型
因此,我将此部分转换为vb.net,如下所示
Dim oOutputArray()作为对象=新对象(){}
当使用vb.net时,com项目中的oArray只有两种类型,不包括VT_BYREF
据我所知,vb6将ByRef对象作为默认值传递,而vb.net将ByVal作为默认值传递。
我认为在vb.net上创建ref对象需要做更多的工作。所以我在谷歌上搜索了很多,但是我找不到一个合适的解决方案
您能给我一点帮助吗?试试Thk,我试过了,但VariantRapper无法应用于数组:(尝试Thk,我尝试过,但VariantRapper无法应用于数组:(
MyComApp.myComSub(oOutputArray)