IntelliSense引擎有太多错误无法正常运行

时间:2018-01-06 17:10:33

标签: c++ visual-studio windows-installer visual-studio-2017

  

请保留 window-installer标记 - 此Q / A 不适用   C ++专家,但对于像我这样的人,他们必须使用C ++。   他们可能面临这种潜在的时间浪费,需要快速解决   msi.h或其他包括快速运作。 VS2017模板必须   已经发生了很大变化 - 我之前没有看到过这个问题。

安装了所有可用的 C ++组件

Visual Studio 2017社区版(专业版中可能不存在此问题?)。

  1. File => New => Project... => Visual C++\Windows Desktop\Windows Console Application => OK
  2. 进行快速测试构建以验证没有错误。 Right click solution => Build。如上所述,不应出现任何错误。
  3. 现在在控制台应用程序CPP文件中#include stdafx.h函数正上方main()正下方的msi.h中添加此包含:
  4. #include <msi.h>
    // And just to make things link:
    #pragma comment(lib, "msi.lib")
    
    1. 红色错误雪佛龙应该出现在第一行评论开头的左上角,在悬停时说:&#34; 有太多错误,智能感知引擎无法正常运行,其中一些可能在编辑器中不可见。 PCH警告:发生未知错误。未生成IntelliSense PCH文件。&#34;

    2. 现在进行构建应该会发现很多错误。在我wincrypt.h的情况下 - 它让我想到了WIN32_LEAN_AND_MEAN - 请参阅下面的答案。我认为已经包含了这些基础知识。

    3. 我在所有新C++ Windows Console Application projects中都看到了这个问题,但是当我尝试使用Visual Studio 2013创建的旧项目时,它会正确编译,其中包含msi.h以及链接编译指示。

      从错误消息判断,预编译头(PCH)必定存在问题。这就是让我失望的原因。

1 个答案:

答案 0 :(得分:0)

更新:其他人询问了其他包含文件(不是MSI相关)的相同错误消息。我想这是一个偶然发生的普遍问题 - 可能是那些使用不多的类(或者包括Windows.h - 也许)?

作为一般性建议,这可能是隐藏依赖问题(缺少的包含)或包含的错误订单文件(您需要更改包含的顺序,因为某些技术原因并不是很明显)或不正确或缺少定义(如下面一行中的答案所示)。 我的看法:上github.com并搜索类似的示例代码

对于我们这些偶尔需要C ++的人来说,这些问题可能非常笨拙,而且其他人都知道&#34;众所周知&#34;对于C ++专业人士(他们在几秒钟内修复它作为第二天性)。 C ++专业人士:请记住,这些问题可能会让我们这些被迫在需要时克服C ++并且没有C ++专业人员可以解决的问题会耗费一整天的生产力 - 可怕的情况那! :-) - 我特此宣布&#34; 对你的C ++大师好一点 - 如果你有他们的那一天 - &#34;)。

stdafx.h中,尝试在#pragma once之后和其他包含之前添加此内容:

#define WIN32_LEAN_AND_MEAN
// Windows Header Files:
#include <windows.h>

现在尝试重建您的解决方案,看看问题是否已经消失。

虽然很简单,但错误信息(在上面的问题中看到)的陌生感可能会让人偏离正在试图找出问题所在。此外,这种行为在VS2017中似乎是新的 - 模板更改。

看起来包括<atlstr.h>也会起作用,所以这可能会让我的问题更加模糊。可能已经发誓我试过这个 - 也许在我做了项目设置更改后,它仍然失败了(正是我希望帮助别人避免)。

如果只有这些基本包含可以存在于文件中但已被注释掉,那么它们可以按顺序快速启用以进行测试 - 没有任何大惊小怪。