• 编译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文件就对了。但这又是为什么呢?具体原因现在也不知道。我只知道模板类必须这样,但是我没有使用模板啊。网上貌似没有这方面的东东。

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

  • 相关阅读:
    JDK源码分析 – HashMap
    牛哄哄的celery
    redis数据库基础篇
    RPC的入门应用
    Python的常用模块
    消息队列之真知灼见
    面向对象编程(2)
    python3的C3算法
    面向对象编程(1)
    CRM项目之stark组件(2)
  • 原文地址:https://www.cnblogs.com/jianqifeihong/p/2233550.html
Copyright © 2020-2023  润新知