我正在尝试构建一个DLL,该DLL实现了预编译静态库中的类所固有的类。

这两个项目都有一个共享的头文件,其中声明了第一个类(GroovyClass.h):

class GroovyClass
{
public:
    GroovyClass();
    virtual ~GroovyClass();
}

在静态库中,该类已定义和实现(GroovyClass.cpp)并已编译(我们将结果称为GroovyClass.lib)。

然后,在共享库/ DLL中,此类被继承为:

#include "GroovyClass.h"

class MassiveFail : GroovyClass
{
public:
    MassiveFail();
    virtual ~MassiveFail();
}

可以编译,但是在链接阶段,对于GroovyClass构造函数和析构函数,我收到关于不可解析符号的错误。我照常与GroovyClass.lib链接,所以我不明白为什么它找不到符号。

在能够在我的DLL项目中使用/继承它之前,我需要以某种特殊的方式声明GroovyClass吗?

最佳答案

您可以打开Visual Studio命令提示符并运行DumpBin和/或Lib来查看GroovyClass.lib中的内容吗?确保例如GroovyClass::GroovyClass在其中。

关于c++ - C++ DLL:静态库中定义的类的继承和用法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17532070/

10-11 15:12