0

我尝试了GetSafeArrayPtr()返回 LPSAFEARRAY* 的方法,typedef 定义为:

typedef /* [wire_marshal] */ SAFEARRAY *LPSAFEARRAY;

我以为我可以直接将其分配给 SAFEARRAY* 变量,但编译器给出了这个错误:

错误 C2440:“=”:无法从“LPSAFEARRAY *”转换为“SAFEARRAY *”

我觉得这很奇怪。我在这里做错了什么?

PS:我在 C++/CLI dll 中执行此操作(如果有任何相关性)。

4

1 回答 1

2

LPSAFEARRAY *是指向 的指针SAFEARRAY *,因此您需要一个双指针,如下所示:

{
    CComSafeArray<VARIANT> vArray;
    SAFEARRAY** pArray;
    pArray = vArray.GetSafeArrayPtr();
}

然后你可以通过SAFEARRAY *取消引用从返回的指针将 传递给需要它作为参数的函数CComSafeArray

DummyFunction(*pArray);
于 2013-09-03T08:05:24.937 回答