26
foo.cpp(33918) : fatal error C1854: cannot overwrite information formed 
during creation of the precompiled header in object file: 'c:\somepath\foo.obj'

咨询 MSDN 为我提供了以下信息:

在为同一文件指定 /Yc(创建预编译头)选项后,您指定了 /Yu(使用预编译头)选项。某些声明(例如包括 __declspec dllexport 的声明)使此无效。

在这种情况下,我们使用的是 dllexport 和预编译的头文件。有没有人遇到过这种情况并知道任何解决方法?非常感谢任何有助于阐明这个问题的意见。

谢谢

4

3 回答 3

44

我想你可以在这里找到答案:http: //social.msdn.microsoft.com/forums/en-US/vclanguage/thread/b3aa10fa-141b-4a03-934c-7e463f92b2a5/

基本上,您需要将 stdafx.cpp 文件设置为“创建预编译头文件”,并将所有其他 .cpp 文件设置为“使用预编译头文件”

于 2009-06-03T20:24:16.237 回答
1

我也有这个问题。

确保将预编译器头输出文件设置为正确的位置。我的实际上输出到了正确的位置,但读取它时出现了问题,因为路径里面有一个小神器。

于 2010-12-28T14:28:22.403 回答
0

我的解决方案是仔细检查所有预编译的头文件设置,不仅是 .exe 项目,而且是所有 dll 项目,并重新创建所有头文件。之后,错误在 .exe 编译中消失了。

于 2019-01-15T09:54:56.747 回答