C++ 带有DLL解决方案的预编译头。无法打开预编译头文件

C++ 带有DLL解决方案的预编译头。无法打开预编译头文件,c++,dll,visual-studio-2005,precompiled-headers,C++,Dll,Visual Studio 2005,Precompiled Headers,当此解决方案使用.lib文件而不是.dll文件时,此操作不会出错 除了一个当前使用预编译头的项目外,我的所有项目都没有错误。预编译头称为“LudoGlobal.h”。我试图将上一个项目链接到这个预编译头(它存在于一个单独的“核心”项目中),但我得到了以下错误: 错误4致命错误C1083:无法打开 预编译头文件: “....\Output\LudoSound\Debug\LudoSound.pch”: 没有此类文件或文件 目录ludosundmanager.cpp 1 对于每个.cpp文件。为什么

当此解决方案使用.lib文件而不是.dll文件时,此操作不会出错

除了一个当前使用预编译头的项目外,我的所有项目都没有错误。预编译头称为“LudoGlobal.h”。我试图将上一个项目链接到这个预编译头(它存在于一个单独的“核心”项目中),但我得到了以下错误:

错误4致命错误C1083:无法打开 预编译头文件: “....\Output\LudoSound\Debug\LudoSound.pch”: 没有此类文件或文件 目录ludosundmanager.cpp 1

对于每个.cpp文件。为什么会这样?我怎样才能解决它


我意识到LudoSound.pch并不存在。我假设它可能是在LudoSound编译时创建的,是吗?

您是在项目上使用“自动生成”还是在一个cpp文件上使用“使用预编译头”和“创建预编译头”?后者效率更高,但我看到项目上的每个文件配置被意外重置,因此“stdafx.cpp”(或其他)文件不再生成预编译头。

尝试在新文件中重建项目,仅复制所需的文件。

LudoSound.pch未重新生成。仅删除它所在的文件夹,然后重新生成。

在从项目中删除并重新添加stdafx.cpp后,我遇到了此问题(&O)。 解决方案:

  • stdafx.cpp需要具有属性Create PrecompiledHeader(/Yc),这将stdafx.cpp设置为负责从stdafx.h创建.pch的属性
  • 项目(以及其中的所有文件)可以具有属性Use PrecompiledHeader(/Yu),它们可以使用由stdafx.cpp编译创建的.pch

检查文件(....\Output\LudoSound\Debug\LudoSound.pch)是否存在。它不存在。我想它需要建造。这似乎正在停止它。可能与我使用的Use PrecompiledHeader(/Yu)重复。通过文件Ludocore\LudoGlobal.h创建/使用PCH。LudoGlobal是我的预编译头。您需要一个包含.h文件的cpp文件(LudoGlobal.cpp),该文件具有不同于所有其他.cpp文件的正确配置设置。您需要转到该.cpp文件的“属性”(与项目属性相反)并将其设置为“创建预编译头”。因此,
LudoGlobal.cpp
文件设置为“创建预编译头”,但编译该cpp文件时,不会生成pch文件,也不会发生错误?可能中间/输出目录(或pch文件位置)不匹配,因此其他文件将在与生成位置不同的位置查找它。重建项目时,它是否总是先构建
LudoGlobal.cpp
?你能发布.vcproj文件吗?我也有同样的问题,有几十个相同的错误,比如“{}”字符位置不正确,但之前编译的一切都很好。这让我很想打一个microsoft员工一巴掌,说真的。这个项目是难以置信的紧密耦合。不幸的是,我需要所有这些。还原项目备份并尝试此版本。