C++ COM ATL VariantChangeType 导致 WSH 崩溃
C++ COM ATL VariantChangeType causes WSH to crash
我的 COM ATL 项目中有以下代码行导致 WSH 崩溃:
Result = VariantChangeType(&Variant, &Variant, VARIANT_NOUSEROVERRIDE, VT_UINT);
当上述函数在崩溃前被调用时,Variant
的类型是 VT_BSTR
,这就是我使用 VARIANT_NOUSEROVERRIDE
标志的原因。我尝试删除标志但没有成功。
WSH 崩溃是怎么回事?我确定这是导致崩溃的行,因为显示了该行之前的消息框,但未显示该行之后的消息框。然后 Windows 说:
Microsoft ® Windows Based Script Host has stopped working
我的语法有问题吗?
我通过使用 CComVariant::ChangeType
而不是使用 VariantChangeType
函数解决了这个问题,如下所示:
CComVariant CV = Variant;
HRESULT Result = CV.ChangeType(VT_I2);
我的 COM ATL 项目中有以下代码行导致 WSH 崩溃:
Result = VariantChangeType(&Variant, &Variant, VARIANT_NOUSEROVERRIDE, VT_UINT);
当上述函数在崩溃前被调用时,Variant
的类型是 VT_BSTR
,这就是我使用 VARIANT_NOUSEROVERRIDE
标志的原因。我尝试删除标志但没有成功。
WSH 崩溃是怎么回事?我确定这是导致崩溃的行,因为显示了该行之前的消息框,但未显示该行之后的消息框。然后 Windows 说:
Microsoft ® Windows Based Script Host has stopped working
我的语法有问题吗?
我通过使用 CComVariant::ChangeType
而不是使用 VariantChangeType
函数解决了这个问题,如下所示:
CComVariant CV = Variant;
HRESULT Result = CV.ChangeType(VT_I2);