C++ 两个项目使用相同的.cpp文件和头,其中包括“stdafx.h”

C++ 两个项目使用相同的.cpp文件和头,其中包括“stdafx.h”,c++,visual-studio,precompiled-headers,stdafx.h,C++,Visual Studio,Precompiled Headers,Stdafx.h,我在一个.cpp文件中有几个函数,我希望我的几个项目使用同一个文件。 所以,不要将它们复制到不同的目录,只需将它们从原始位置添加到VisualStudio中的项目文件中并使用它们即可 问题是include stdafx.h似乎引用了与文件exist相同的目录,这会导致编译器出现问题 有没有办法或解决办法,或者我在做一些概念上错误的事情 我认为把它作为一个静态库有点过分了。编译和构建新项目,并确保其他人使用正确的DEBUG/RELEASE.lib。嗯。对一个懒惰的程序员来说有点难 我认为您应该做的

我在一个.cpp文件中有几个函数,我希望我的几个项目使用同一个文件。 所以,不要将它们复制到不同的目录,只需将它们从原始位置添加到VisualStudio中的项目文件中并使用它们即可

问题是include stdafx.h似乎引用了与文件exist相同的目录,这会导致编译器出现问题

有没有办法或解决办法,或者我在做一些概念上错误的事情


我认为把它作为一个静态库有点过分了。编译和构建新项目,并确保其他人使用正确的DEBUG/RELEASE.lib。嗯。对一个懒惰的程序员来说有点难

我认为您应该做的是将.cpp文件包含在library.DLL中。然后,通过将library.LIB和导出函数.H的库的头文件包含到使用库的项目中,可以静态地将其加载到项目文件中。这样,您将使用.LIB文件静态地将.DLL加载到内存中,并且这些函数将通过创建库时创建的.H文件提供


我知道说这不是很明显,特别是如果你过去没有做过的话。如果需要,可以将项目文件上载到某个位置并提供链接。我可以更好地描述您需要做什么。

仅使用该文件创建静态库项目。让所有其他项目都依赖于库,而不是直接提到源文件。如果不需要为此文件使用预编译头文件,请删除include stdafx.h。然后右键单击解决方案资源管理器中的文件,选择属性,在C/C++的选项页面的某个地方有一个禁用预编译头的选项。你也可以在整个项目中关掉它们。我认为这有点过分了。我必须创建一个新的项目,在cpp文件中的每一个更改也要编译它,并确保其他项目使用最近的.lib文件或.dll。您的解决方案可以工作,但希望得到更简单的解决方案:DWell,通过包含头文件来链接不同项目的.cpp文件通常不是一个好的做法。为什么你有几个项目?有什么特别的原因吗?您不能在一个项目中完成所有工作吗?如果您在不同的源文件中使用相同的头文件,那么stdafx.h是一个很好的占位符。因此,与在每个源文件中都包含头文件不同,您只需在stdafx.h中包含头文件,并在源文件中包含stdafx.h。因此,如果源文件使用std::string,则不必在每个.cpp文件中都写入include。而是将stdafx.h包含在源文件中,并将stdafx.h包含在源文件中。因为它们是完全不同的项目,目的不同,只是共享一些通用算法。假设我有一个通用的排序算法,我想在多个项目中使用它。你是说最好的做法是把它做成一个.lib文件?我想是的。我不明白你为什么要用其他方式做这件事。特别是当它们像排序算法一样通用时。