error LNK2001: unresolved external symbol 的疑难病症
今天终于碰到个难题. 如下是我对问题的简单代码描述.
我定义了一个类:
#ifndef __A_H__
#define __A_H__
class A
{
public:
A () {}
virtual ~A () {}
public:
BOOL Func1 ();
BOOL Func2 ();
...
...
};
#endif
.CPP代码实现如下:
A::Func1 ()
{
DoSomething ();
}
A::Func2 ()
{
DoSomethingElse ();
}
然后,我把CPP编译了一遍,此时没问题!
接着把整个工程的编译后的中间文件全部Clear, 再全编译它... 等到Link时,问题出现了 :(
VC告诉我, 在引用过A::Func1()接口的XXXXX.cpp文件link时, "error LNK2001: unresolved external symbol".
后来, 我把在.cpp对接口A::Func1 ()的实现代码放置到.h里, 也就是如下所写:
#ifndef __A_H__
#define __A_H__
class A
{
public:
A () {}
virtual ~A () {}
public:
BOOL Func1 () { DoSomething (); }
BOOL Func2 ();
...
...
};
#endif
这样全编译的结果就是正确的! 我很纳闷...
有谁知道这是怎么回事儿吗? 我有点怀疑是不是Stack乱了:(