编译DLL出现无法解析的外部符号

问题描述:

在win32应用程序项目Project1中的Algorithm.h头文件中,定义了一个类Algorithm,并声明了如下:

virtual void initialize();

virtual void nextStep() = 0;

virtual void shutdown();

在Algorithm.cpp文件中实现了这第一个和第三个函数

在win32 DLL项目Project2的HanoTower.h头文件中定义了类HanoTowerAlgorithm,继承自Algorithm类,HanoTower.cpp实现它重载了三个基类函数。

现在我编译Project2时,提示说“无法解析的外部符号”,“Algorithm::initialize@...”和“Algorithm::shutdown()@...”。

为什么纯虚函数不会报错?是不是因为纯虚函数没有函数体?经过几番尝试,我发现基类函数的声明和实现必须放在一起,也就是说,我把基类函数实现代码从cpp移到h文件就对了。但这又是为什么呢?具体原因现在也不知道。我只知道模板类必须这样,但是我没有使用模板啊。网上貌似没有这方面的东东。

这个问题留着先,以后说不定能解决,或者大家知道是怎么回事,麻烦告知一声,谢了先。

posted @ 2011-11-02 20:30  剑起飞虹  阅读(1897)  评论(8编辑  收藏  举报