错误C1854:无法在对象文件中覆盖在预编译头创建期间形成的信息。

27
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和预编译标头。有人遇到过这种情况,并且知道任何解决方法吗?非常感谢任何有助于解决此问题的意见。

谢谢

3个回答

47

7
更改选项后清洁溶液是推荐的。 - nergeia
我理解得对吗:看起来像项目选项的选项对话框实际上不是项目选项,而是当前所选源文件的选项? - Thomas Weller

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

1

我也遇到了这个问题。

确保预编译头文件的输出位置设置正确。我的实际上已经输出到了正确的位置,但由于路径中有一些小的瑕疵,导致读取时出现了问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接