安装了所有可用的 C ++组件的请保留 window-installer标记 - 此Q / A 不适用 C ++专家,但对于像我这样的人,他们必须使用C ++。 他们可能面临这种潜在的时间浪费,需要快速解决
msi.h
或其他包括快速运作。 VS2017模板必须 已经发生了很大变化 - 我之前没有看到过这个问题。
Visual Studio 2017社区版(专业版中可能不存在此问题?)。
File => New => Project... => Visual C++\Windows Desktop\Windows Console Application => OK
。Right click solution => Build
。如上所述,不应出现任何错误。#include stdafx.h
函数正上方main()
正下方的msi.h中添加此包含:#include <msi.h>
// And just to make things link:
#pragma comment(lib, "msi.lib")
红色错误雪佛龙应该出现在第一行评论开头的左上角,在悬停时说:&#34; 有太多错误,智能感知引擎无法正常运行,其中一些可能在编辑器中不可见。 PCH警告:发生未知错误。未生成IntelliSense PCH文件。&#34;
现在进行构建应该会发现很多错误。在我wincrypt.h
的情况下 - 它让我想到了WIN32_LEAN_AND_MEAN
- 请参阅下面的答案。我认为已经包含了这些基础知识。
我在所有新C++ Windows Console Application projects
中都看到了这个问题,但是当我尝试使用Visual Studio 2013
创建的旧项目时,它会正确编译,其中包含msi.h
以及链接编译指示。
从错误消息判断,预编译头(PCH)必定存在问题。这就是让我失望的原因。
答案 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>
也会起作用,所以这可能会让我的问题更加模糊。可能已经发誓我试过这个 - 也许在我做了项目设置更改后,它仍然失败了(正是我希望帮助别人避免)。
如果只有这些基本包含可以存在于文件中但已被注释掉,那么它们可以按顺序快速启用以进行测试 - 没有任何大惊小怪。