【发布时间】:2009-07-14 17:01:01
【问题描述】:
我有一个类有两种可能的实现,这取决于预处理器开关。我处理这个问题的方法是创建“src\CompSwitch1\class.h”和“src\CompSwitch2\class.h”。在我的标准包含文件中,我使用
#ifdef CompSwitch1
#include "CompSwitch1\class.h"
#elif CompSwitch2
#include "CompSwitch2\class.h"
#else
#error "Specify CompSwitch1 or CompSwitch2"
#endif
这适用于我的大多数需要两个版本的课程。但是,在其中一个上,我收到链接器错误(lnk2019:未解析的外部符号)。我正在使用 MS Visual Studio 2005 和 2008,它们都出现了。
在 .h 文件的顶部,我针对预处理器选项进行了测试。 此外,虽然为了简洁起见,我只引用了 .h 文件,但在相应的目录中还有一个 .cpp 文件用于每个文件。
【问题讨论】:
-
LNK2019 可能正在发生,因为您的#include 引入的类的实现(在适当的 *.cpp 中)没有被编译。您能否提供有关错误的更多信息(哪个符号、它在哪个文件中定义等)?
标签: c++ visual-studio linker c-preprocessor