我面临着与VC 2010非常奇怪的链接问题。现在我正在开发一个C ++库,为了使调试更容易,对于某些函数,库提供了两个函数接口。例如,
class Object
{
public:
int fun(std::vector<int> &auxiliary_variable_for_debug_purpose);
int fun();
}
也可以用这种方式重新组织这个类:
class Object
{
public:
#ifdef DEBUG_INDICATOR
int fun(std::vector<int> &auxiliary_variable_for_debug_purpose);
#else
int fun();
#endif
}
通过这样做我除了给用户一个明确的界面。
我现在面临的问题是int fun(std::vector<int> &auxiliary_variable_for_debug_purpose);
和int fun();
将调用另一个名为void help_function()
的函数,该函数在分隔的文件中声明和定义。
file.h
void help_function()
和
file.cpp
void help_function()
{
// do something
}
正如您所看到的,无论void help_function()
是否已定义,DEBUG_INDICATOR
都是相同的。如果我定义了DEBUG_INDICATOR
,我可以使用int fun()
函数编译该类,没有任何问题。但是,当我未定义DEBUG_INDICATOR
时,会发生错误LNK2001
错误,表明未解析的外部符号void help_function()
。我已经尝试了一切可能的方法来解决它,但失败了。任何想法将不胜感激。
修改
我构建的库是一个动态库。无论是否定义DEBUG_INDICATOR
,都可以构建库,并且仅在调用库时才会发生链接错误。