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

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

  • 相关阅读:
    Python购物车的实现课程
    第一天作业二 三级菜单的实现
    windows快捷键命令汇总整理
    python课程第一天作业1-模拟登录
    Java中的代理
    Java中的继承
    Java中的访问权限细谈
    Java中的参数列表
    Java中的this关键字老生常谈
    数据结构与算法Java描述 队列
  • 原文地址:https://www.cnblogs.com/jianqifeihong/p/2233550.html
Copyright © 2011-2022 走看看