C++/CLI互操作:COM函数始终返回null IntPtr

C++/CLI互操作:COM函数始终返回null IntPtr,com,interop,c++-cli,Com,Interop,C++ Cli,我有使用COM库的C++/CLI模块。COM库函数返回指向对象的指针。C++/CLI中COM函数调用的签名如下 IntPtr p = myCOMObject->GetSettings(); 在COM接口中,相同的函数具有以下性质 virtual HRESULT STDMETHODCALLTYPE GetSettings( /* [retval][out] */ void *CSettings) = 0; 参数对象**是在另一个G

我有使用COM库的C++/CLI模块。COM库函数返回指向对象的指针。C++/CLI中COM函数调用的签名如下

          IntPtr p = myCOMObject->GetSettings();
在COM接口中,相同的函数具有以下性质

         virtual HRESULT STDMETHODCALLTYPE GetSettings( 
        /* [retval][out] */ void *CSettings) = 0; 

参数对象**是在另一个GETSturt函数中创建的其他类的本机C++对象。< /P>


在C++/CLI中调用此函数时。我总是将IntPtr设置为“0”,并且没有设置任何值。我用纯C++代码检查,得到适当的对象。原因可能是什么?我做错什么了吗?请提出建议

如果CSettings为[retval][out],是否应声明为void**?如果我更改为void**,则为事件。。我得到了同样的结果。蒂姆是对的,这个签名根本上是有缺陷的。您不能在不更改COM服务器的情况下更改它。我很确定我已经回答了这个问题,顺便说一句,贴一个链接到你的其他问题或用户名。你好,汉斯,你是对的,我已经在COM服务器部分以及Void**的使用部分做了更改,但我得到的指针始终为零,即IntPtr=0;在C++中,函数签名中的[OUT ]只是注释。当C++变量是空**CSET时,通过写入*cStase=值赋值给它;非CSettings=值;就像在C中一样,[out]变量通过ref传递。