重建预编译头文件

Posted

技术标签:

【中文标题】重建预编译头文件【英文标题】:Rebuild precompiled header 【发布时间】:2011-11-06 19:32:50 【问题描述】:

我正在尝试将 MFC 与 ProC 一起使用。 Functions.pc 是我使用 ProC 语法连接到数据库的地方。所以我在对话框模型中包含了'Functions.h',我想在其中调用'Funtions.h' 中的函数。现在我得到了这个错误。

    Add directive to 'stdafx.h' or rebuild precompiled header

我知道我需要将'stdafx.h' 包含到'Functions.h' 才能使其正常工作。我做到了。它可以编译,但是当我尝试运行程序时,它无法识别由 'Functions.cpp' 创建的 ProC 的语法。我真的不明白如何重建预编译的头文件,因为我不明白'stdafx.h' 中的代码。

【问题讨论】:

你说的是哪一部分? @tokwan:它在标签 wiki 中。如果您将鼠标悬停在标签上,它会显示它的 wiki。 How to fix .pch file missing on build?的可能重复 【参考方案1】:

在windows上使用预编译头的常用方法是

    stdadx.h 中包含系统、第三方标头或不经常更改的标头 stdafx.cpp 通常只包含 stdafx.h 您的所有项目 cpp 文件都包含 stdafx.h 作为第一个标头 您的项目头文件不应包含 stdafx.h

要触发预编译的头文件重建,

    修改 stdafx.h 并进行增量构建 或者做一个重建项目

【讨论】:

【参考方案2】:

自己找到了解决方案。我需要将该 .cpp 文件的属性设置为不使用任何预编译的头文件。

【讨论】:

@Nick 已经有一段时间了,不记得了。但是您可以右键单击 cpp 文件并相应地更改设置。我为此使用 Visual Studio。点击截图链接goo.gl/cKA8mZ @Nick 如何禁用 CPP 文件的预编译头文件:***.com/a/9319031/1879699【参考方案3】:

在 VS 2012 中,您可以将项目、解决方案或源文件的属性设置为不使用预编译头文件。具体操作方法见附图…… VS Turn off Precompiled Headers

【讨论】:

【参考方案4】:

在 VS2017 中,此错误一直存在,直到我将 Project Properties > Configuration Properties > C/C++ > Precompiled Headers > Precompiled Header 设置从“使用 (/Yu)”切换到“创建 (/Yc)”。

对于项目设置,使用:

为项目生成的预编译头文件“创建” “使用”由另一个项目生成的预编译头文件

对于每个文件设置,使用:

为 stdafx.cpp 文件“创建” “使用”所有其他 .c.cpp 文件

【讨论】:

以上是关于重建预编译头文件的主要内容,如果未能解决你的问题,请参考以下文章

VS 总是寻找预编译的头文件

C++ 预编译头文件已禁用

使用预编译头提高编译速度

预编译头文件 - 选择文件

预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)

预编译头文件来自编译器的早期版本,或者预编译头为 C++ 而在 C 中使用它(或相反)