cannot convert from 'ref object' to 'tagVARIANT*

本文关键字:to tagVARIANT object ref convert cannot from | 更新日期: 2023-09-27 18:08:26

我在c++/CLI中有一个使用VARIANT*作为参数的方法。每当我在c#中调用该方法时,传递一个空对象作为VARIANT*参数,我就会得到编译错误。

错误:

Argument #: cannot convert from 'ref object' to 'tagVARIANT*'
下面是c++/CLI方法:
int foo::fooMethod( VARIANT* varFoo)
{
...
return 1
}

c#代码(引用c++ DLL):

foo test = new foo();
object objFoo;
int iRet = foo.fooMethod( ref objFoo );

cannot convert from 'ref object' to 'tagVARIANT*

从System::Object^到COM自动化变量的转换只有在允许CLR调用COM接口方法时才会自动进行。看到它出现在本机代码中是相当不寻常的,请确保您没有绕过正常的COM互操作选项。很容易从c#或VB中使用。. NET代码,只需添加对类型库的引用。

只需将参数声明为Object^即可。如果你真的需要一个VARIANT,那么你可以从Marshal:: getativevariantforobject()中获得一个。