2013-11-21 77 views
0

我面对VC 2010中一个非常奇怪的链接问题。现在我正在开发一个C++库,为了使调试更容易,对于某些函数,库提供了两个函数接口。例如,定义#ifdef #else时出现奇怪的链接错误

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,都可以构建库,并且只有在调用库时才会发生链接错误。

+2

什么是您确切的错误信息? – Ben

+0

您使用'int fun(std :: vector &auxiliary_variable_for_debug_purpose);'当'DEBUG_INDICATOR'被定义为不是'int fun()'时。 – MahanGM

+0

1.给我们提供完整的错误信息。 2.你是否尝试重建整个解决方案? – Dialecticus

回答

0

由于您尚未发布确切的错误消息,因此this MSDN link可能会对您有所帮助。

提示:如果您希望收到准确的答案,请在提问时具体说明。

+0

感谢您的回答。确切的错误是无法解析外部符号void help_function()。我也没有更多的信息。 – feelfree