_com_ptr_t的IntelliSense错误是Visual Studio 2017 15.5.1

Intellisense error with _com_ptr_t since Visual Studio 2017 15.5.1

本文关键字:Studio 2017 Visual 错误 ptr com IntelliSense      更新时间:2023-10-16

我有一个从导入的.tlb文件生成的 _com_ptr_t actantiation,该文件在以下...

中使用
#import "object.tlb"
void demo()
{
    IObjectPtr p;
    p.CreateInstance(__uuidof(Object));
    p->DoSomething();
}

在VS2017 15.5.1之前,该代码正确地通过Intellisense解析并构建正常。现在,在15.5.1及以后,当p->DoSomething()时,我在CreateInstancep下都得到了弯曲,如下所示,以Intellisense工具提示为注释。

#import "object.tlb"
void demo()
{
    IObjectPtr p;
    // class "_com_ptr_t<_com_IIID<IObject, &__uuidof(IObject)>>" 
    // has no member "CreateInstance"
    p.CreateInstance(__uuidof(Object));
    // expression must have a pointer type.
    p->DoSomething();
}

有趣的是,当我点入对象时,IntelliSense仅显示一个可用的成员GetIID,但是代码构建和运行而无需发行。

我尝试忽略这些弯曲,但是我在代码中使用了很多com调用,很难从一堆伪造的错误中筛选出真实的错误。我尝试了干净和重建。我尝试删除.vs目录。我已经尝试清除组件缓存。什么都没有用。什么给?

update 看来该问题已在15.8更新中解决。

旧答案我们在项目中也面临着类似的问题。我注意到,仅当我们切换到C 17语言标准时才显示出来。回到C 14使Intellisense的行为正确。