我通过导入.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
时,我在p
和p->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目录。我已经尝试清除组件缓存了。没有任何效果。是什么给了什么?
答案 0 :(得分:3)
<强>更新强> 看起来问题已在15.8更新VS.
中得到修复旧答案 我们在项目中遇到了类似的问题。 我注意到它只在我们切换到C ++ 17语言标准时出现。回到c ++ 14可以使Intellisense正常运行。