自Visual Studio 2017 15.5.1起,与_com_ptr_t的Intellisense错误

时间:2018-03-30 13:29:14

标签: c++ visual-studio com intellisense atl

我通过导入.tlb文件生成_com_ptr_t实例化,该文件在以下内容中使用...

#import "object.tlb"

void demo()
{
    IObjectPtr p;
    p.CreateInstance(__uuidof(Object));
    p->DoSomething();
}

在VS2017之前15.5.1此代码由Intellisense正确解析并构建良好。现在,在15.5.1及更高版本中,当CreateInstance时,我在pp->DoSomething()下都会得到曲线,如下所示,智能感知工具提示标注为注释。

#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目录。我已经尝试清除组件缓存了。没有任何效果。是什么给了什么?

1 个答案:

答案 0 :(得分:3)

<强>更新 看起来问题已在15.8更新VS.

中得到修复

旧答案 我们在项目中遇到了类似的问题。 我注意到它只在我们切换到C ++ 17语言标准时出现。回到c ++ 14可以使Intellisense正常运行。