如何从CComSafeArray中获取底层SAFEARRAY
How do you get the underlying SAFEARRAY from a CComSafeArray?
我尝试了GetSafeArrayPtr()
方法,该方法返回一个typedef定义为:的LPSAFEARRAY*
typedef /* [wire_marshal] */ SAFEARRAY *LPSAFEARRAY;
我以为我可以直接将其分配给SAFEARRAY*变量,但编译器给出了以下错误:
错误C2440:"=":无法从"LPSAFEARRAY*"转换为"SAFEARRAY"*'
我觉得这很奇怪。我在这里做错了什么?
PS:我是在一个C++/CLI dll中做这件事的(如果这有任何相关性的话)。
LPSAFEARRAY *
是指向SAFEARRAY *
的指针,因此需要一个双指针,如下所示:
{
CComSafeArray<VARIANT> vArray;
SAFEARRAY** pArray;
pArray = vArray.GetSafeArrayPtr();
}
然后,您可以通过取消引用从CComSafeArray
:返回的指针,将SAFEARRAY *
传递给需要它作为参数的函数
DummyFunction(*pArray);
相关文章:
- C++为构建时间获取QDateTime的可靠方法
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 使用指针从C++中的数组中获取最大值
- 如何获取std::result_of函数的返回类型
- 如何在openssl-ecc中获取十六进制格式的私钥
- 使用Unreal C++获取VR耳机的世界位置/方向
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 从C字符串中获取奇怪的字符串长度
- 为什么我的for循环不能正确获取argv
- 从python中调用C++函数并获取返回值
- 如何获取一个数字的前3位
- 获取字符串的长度并将其分配给数组
- 无法获取菜单选择以运行函数.C++
- 数组长度,为什么从命令行获取时不能使用它?
- Boost Spirit,获取迭代器内部语义动作
- 尝试通过OCI例程从Oracle获取blob数据,但出现错误:ORA-01008:并非所有变量都绑定
- 具有默认值的引用获取函数
- 从SAFEARRAY中获取一个元素(或将其转换为长数组)
- 如何从CComSafeArray中获取底层SAFEARRAY