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:三元运算
    SaltStack部署服务及配置管理apache+php-第二篇
    SaltStack介绍及简单配置-第一篇
    git基础常用维护命令
    MySQL设置只读模式
    运维杂记-05
    Tomcat的配置,设置内存,获取用户IP
    Linux系统巡检项目
    Redis维护
    nginx配置文件说明
  • 原文地址:https://www.cnblogs.com/jianqifeihong/p/2233550.html
Copyright © 2011-2022 走看看