Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将ref对象数组从.net传递到COM服务器_C++_.net_Com_Vb6_Marshalling - Fatal编程技术网

C++ 将ref对象数组从.net传递到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 )

我正试图从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 )
                    // 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)