问题标签 [precompiled-headers]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
g++ - - 使用 g++ 包含一个预编译的头文件
我试图通过添加-include myprecompiledheader.h
到我的编译器标志来将预编译的头文件包含到我的项目中。但是,当我在 GCC 中使用 -H 选项时,此文件不会显示在列表中,因此我无法查看“!” 或“x”来确定我的 .pch 文件是否正在被使用。有什么方法可以判断我的预编译头文件是否正在被使用-include
?
c++ - 使用命名空间创建全局函数,但得到多重定义的符号错误
这些函数是我的大多数程序对象将使用的实用程序类型的东西。我想将它们放在一个命名空间中并让它们全局化。这个命名空间在头文件中定义,然后添加到我的预编译头文件中。然而到目前为止,我已经在 2 个不同的对象中使用了这个命名空间中的函数,并且编译器在这 2 个对象上抛出了多重定义的符号错误。
命名空间文件
和我的预压缩头
链接器错误消息:
Manager.obj : error LNK2005: "int __cdecl Utils::GetRandomBetween(int,int)" (?GetRandomBetween@Utils@@YAHHH@Z) already defined in Bot.obj
stdafx.obj : error LNK2005: "int __cdecl Utils::GetRandomBetween(int,int)" (?GetRandomBetween@Utils@@YAHHH@Z) already defined in Bot.obj
c:\users\lee\documents\visual studio 2010\Projects\AI\Debug\AI.exe : fatal error LNK1169: one or more multiply defined symbols found
还可能值得注意的是,在我的 Manager 类标题中,我转发了声明 Bot. 与 Village 类标题相同。
c++ - WxWidgets 编译帮助
我尝试编译 WxWidgets (Latest; VC9; Release),但它只输出 *.obj 和 *.pch 文件,没有 *.lib 文件。我知道 *.obj 文件是对象文件,而 *.pch 文件是预编译头文件,但是我是从 C++ 引用它们还是我必须以某种方式将它们转换为 *.lib 文件。
顺便说一句,我从未使用过 *.pch 并且对它们一点也不熟悉。我现在才使用 C++ 几个月...
c++ - 不是类或命名空间名称
我知道这个问题之前已经被问过和回答过,但似乎没有一个解决方案对我有用,而且我的编译器对这个错误表现得很奇怪。
当我尝试编译我的代码时,会遇到许多错误,例如:
我之前在编译我的项目时遇到过这种错误,但它神秘地消失了。我试图解决这个问题,过了一段时间,在我恢复所有更改后它又开始工作了。
我认为这可能是我的预编译头文件的问题,因为在我尝试修复我的 PCH 无法正常工作的错误后弹出此错误。
这是我的代码(我知道它的设计不是很好,只是想让它现在工作:P):
标准Afx.h
目标.h
目标.cpp
目标列表.h
目标列表.cpp
objective-c - 处理预编译的头文件给了我我不明白的错误
我正在 OS X Lion 上使用 Xcode 4.1 和 Pixelwave 构建 iOS 4.2+ 游戏。
在开发过程中的某个时刻,我对项目进行了清理,自从我无法编译该项目以来,我在处理 PCH 时遇到了大量错误。这是调用和报告的前几组错误:
据我所知,触发此问题的构建设置没有任何变化。
这是我在尝试调试时尝试过的,但未成功:
- 恢复到我之前编译好的项目的先前提交。
- 查看 Pixelwave 的新副本。
- 恢复到我之前编译好的项目的第一次提交。
- 删除项目的 DerivedData 子目录。
- 重新启动 Xcode。
- 重新启动。
- 卸载并重新安装开发工具(我越来越绝望)。
这些都没有帮助——我仍然每次都遇到同样的错误。对于导致这种行为的原因,我束手无策。我什至不知道从哪里开始寻找。
c++ - 库构建器的预编译头文件使用
根据这个答案boost 和 STL 头文件属于预编译的头文件(stdafx.h
在 MSVC 世界中)。因此,我更改了动态链接库项目的标头,并将所有 STL/Boost 标头移动到stdafx.h
我的项目中。
前
后
现在我的优势在于减少了编译时间,但是我的库的所有用户都遇到了构建错误(例如,未知的 boost::scoped_ptr...),因为缺少包含(现在已移至我的stdafx.h
.
有什么办法可以解决这个困境?
我希望减少编译时间并在包含我的头文件后编译错误对于 dll 的任何用户都是不可接受的。
这有帮助吗?
- 保留所有包含指令,但在我的“stdafx.h”中复制它们?由于 stdafx.h 总是首先包含在我项目的任何 cpp 文件中,所以我应该没问题,并且用户不会收到任何错误。或者,如果在一个翻译单元中出现多个包含相同标题的内容(有标题保护),我是否会失去速度优势?
感谢您的任何提示!
c++ - Linux 上的预编译头警告(太短而不能成为 PCH 文件)
我的项目中有一个名为 Core.h 的头文件,我将其用作预编译头文件:
这会创建一个名为 Core.h.gch 的文件
*#include "Core.h"
是模块中每个源文件的第一个指令。
在 OS X 上,它工作得很好——我的项目编译得很好,而且编译得非常快。
然而,在 Linux 上,我的 100 多个文件中有 7 个给出以下警告:
警告:Core.h.gch:太短而不能成为 PCH 文件
就像所有其他源文件一样,#include "Core.h"
这些文件的第一行。
有没有人遇到过这个?可能的原因?为什么只有少数包含 PCH 的文件会发出警告?
我在 Linux 上使用 gcc 版本 4.1.2,在 OSX 上使用 4.2.1
谢谢!
编辑:
这基本上是我构建库的方式:
c++ - 每次制作都会创建预编译的头文件?
我有一个非常简单的makefile,它基本上执行以下操作:
我的问题是,我第一次制作时,创建了Core.h.gch并构建了项目。没关系。
但是,即使什么都不做,再次运行 make 将重新创建 Core.h.gch 并重新编译所有内容。
如果我没有预编译的标头,则 make 表现良好(如果没有任何更改,则不会重建任何内容,并且仅在进行修改时重建必要的内容)
但我真的很想拥有那个预编译的头文件,有什么我做错了吗!?
编辑:
建议如下:
但它仍然每次都会被创建:(
c++ - 使用来自不同项目的预编译头文件
我在 Visual Studio 2010 中有两个项目,我想共享预编译的头文件输出 .pch(i) 文件:一个构建它,另一个应该只使用它。
在清理和重建 Project1 之后,将创建 .pchi 文件。
Rebuild Project2 做了一件奇怪的事情,它删除了 .pchi 文件,然后抱怨找不到它进行编译。
我应该改变什么来停止这种行为(可能在文件“Microsoft.Cpp.x64.Intel C++ Compiler XE 12.0.targets”中?)?
我已将文件设置为只读,然后 Project2 Build 当然会抱怨:
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\x64\PlatformToolsets\Intel C++ Compiler XE 12.1\Microsoft.Cpp.x64.Intel C++ Compiler XE 12.1.targets(84,5):错误 MSB3061:无法删除文件“ .pchi”。拒绝访问路径“ .pchi”。
在第 84 行,.targets 文件有
< 删除条件="'%(ClCompile.DebugInformationFormat)' != '' and '%(ClCompile.DebugInformationFormat)' != 'OldStyle' and '%(ClCompile.ProgramDataBaseFileName)' != '' and !Exists(%( ClCompile.ProgramDataBaseFileName)) 和 '%(ClCompile.UseMSVC)'!='true' 和 '%(ClCompile.InterproceduralOptimization)'!='MultiFile' 和 '%(ClCompile.LevelOfStaticAnalysis)'!='Brief' 和 '% (ClCompile.LevelOfStaticAnalysis)'!='Medium' 和 '%(ClCompile.LevelOfStaticAnalysis)'!='Verbose'" Files="%(ClCompile.PrecompiledHeaderOutputFile)i" />