error LNK2001: unresolved external symbol 的疑难病症

wangchinaking 2006-05-22 03:30:33
今天终于碰到个难题. 如下是我对问题的简单代码描述.
我定义了一个类:
#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乱了:(
...全文
224 7 打赏 收藏 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
芮言 2006-05-22
  • 打赏
  • 举报
回复
高手都来了,up!头文件的问题
mynamelj 2006-05-22
  • 打赏
  • 举报
回复
LNK2001一般是找不到函数体,把cpp文件也加到工程中去再时行编译
sycnick 2006-05-22
  • 打赏
  • 举报
回复
我靠,好多星星,眼花了!
DentistryDoctor 2006-05-22
  • 打赏
  • 举报
回复
A::Func1 ()

是不是前面应该有个BOOL?
老夏Max 2006-05-22
  • 打赏
  • 举报
回复
呵呵,头文件的问题!
Kudeet 2006-05-22
  • 打赏
  • 举报
回复
cpp上面没有用include "....h"?
syy64 2006-05-22
  • 打赏
  • 举报
回复
CPP中包含了该头文件吗?

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧