- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试了 GetSafeArrayPtr()
方法,该方法返回一个 LPSAFEARRAY*,typedef 定义为:
typedef /* [wire_marshal] */ SAFEARRAY *LPSAFEARRAY;
我以为我可以直接将其分配给 SAFEARRAY* 变量,但编译器给出了这个错误:
error C2440: '=' : cannot convert from 'LPSAFEARRAY *' to 'SAFEARRAY *'
我觉得这很奇怪。我在这里做错了什么?
PS:我在 C++/CLI dll 中执行此操作(如果有任何相关性的话)。
最佳答案
LPSAFEARRAY *
是指向 SAFEARRAY *
的指针,因此您需要一个双指针,如下所示:
{
CComSafeArray<VARIANT> vArray;
SAFEARRAY** pArray;
pArray = vArray.GetSafeArrayPtr();
}
然后您可以通过取消引用从 CComSafeArray
返回的指针,将 SAFEARRAY *
作为参数传递给需要它的函数:
DummyFunction(*pArray);
关于c++ - 您如何从 CComSafeArray 获取底层 SAFEARRAY?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18586269/
我有一个 Com 函数: GetData (SAFEARRAY ** pRetVal) 我有以下代码: SAFEARRAY *ppData = NULL; hr = pmyInterfac
我使用以下语句创建了包含 32 个元素的 CComSafeArray 对象。但经过一些操作后,我才知道我只需要安全数组中的 3 个元素。是否可以在创建安全数组后更改其中元素的数量? CComSafeA
我有一个 COM 函数: GetData(SAFEARRAY ** pRetVal) 和以下遗留代码: CComSafeArray saDataArray; hr = pmyInterface->Ge
我的情况是我有一个 COM 对象,我需要在 come windows 中仅使用 C++ 代码。 COM 对象具有接受 SAFEARRAY 作为参数以传递字节数组的函数。在查看了 SAFEARRAY A
CComSafeArray::SetAt method提供一个参数来控制引用的变量是否被复制: HRESULT SetAt( LONG lIndex, const T& t, BOOL bCopy =
我尝试了 GetSafeArrayPtr() 方法,该方法返回一个 LPSAFEARRAY*,typedef 定义为: typedef /* [wire_marshal] */ SAFEARRAY *
我有一个内存泄漏问题,我已将其缩小到以下代码。怎么回事? CComSafeArray sa(5); sa[0] = SysAllocString("constant"); CComSafeArray:
CComSafeArray arr; arr.Add(0x00); 错误 -> C2668:“ATL::CComSafeArray::Add”:对重载函数的调用不明确 我可以添加任何值但不能添加 0
我正在尝试 (i) 跨 COM 边界获取长整型安全数组,以及 (ii) 为方便起见使用 CComSafeArray。 我的问题是在设置 COM 属性后我遇到了不可预测的崩溃(参见下面的 pProlog
我有一个应该通过 LPSAFEARRAY* 返回 SafeArray 的 COM 函数出参数。该函数使用 ATL 的 CComSafeArray 创建 SafeArray模板类。我天真的实现使用 CC
这很可能有一个非常简单的答案,但我无法弄清楚。 我正在尝试重构一些如下所示的代码: SAFEARRAY* psa; long* count; HRESULT hr = pSomeInterface->
有什么快速的方法可以将 std::vector 转换为 CComSafeArray。我目前正在编写一段代码,基本上将 5 或 6 vector 转换为 CComSafeArray(不是在迭代中)。其中
我正在使用 ATL CComSafeArray类,但是如果数组为空,GetCount() 似乎会抛出异常,例如这段代码抛出异常: CComSafeArray array; // array.Add(i
在MSDN documentation for CComSafeArray::MultiDimSetAt , alIndex 记录如下: Pointer to a vector of indexes
我正在使用 COM 库“Microsoft 脚本运行时”(c:\windows\System32\scrrun.dll) 中的 Scripting.Dictionary。我正在使用 import 来获
CComSafeArray fields; hr = _tab_file->get_Fields(fields.GetSafeArrayPtr()); for ( LONG i = fields.Ge
我是一名优秀的程序员,十分优秀!