虚函数表中的thunk未定义

4

我收到了一个错误提示,说

undefined reference to 'virtual thunk to myClass::myFunction'

我正在尝试创建一个库。

以下是我的代码:

myClass.cpp :
    #include "myClass.h"
    void myClass::myFunction() {}
    myClass::~myClass() {}

.

myClass.h :
    {inclusion guards}

    #include "myClass_global.h"

    class MY_CLASSSHARED_EXPORT myClass {
        public:
            myClass();
            virtual void myFunction();
            virtual ~myClass();
    };

.

myClass_global.h
    {inclusion guards}

    #include <QtCore/qglobal.h>

    # if degined(MY_CLASS_LIBRARY)
    #    define MY_CLASSSHARED_EXPORT Q_DECL_EXPORT
    # else
    #    define MY_CLASS Q_DECL_IMPORT
    # endif

我不太熟悉如何编写库。我正在使用QtCreator。

我发现“虚拟thunk”可能是指向某个东西的“函数指针”(析构函数?)找不到……

然而,我在互联网上没有找到非常清楚的内容……


很明显你没有发布真正的代码。define MYCLASS_SHARED_EXPORT Q_DECL_EXPORT?如果你不能提供一个最小正确的能够重现问题的示例,那么在这里你就没有什么希望了。 - Luchian Grigore
这是QtCreator的自动代码...有什么问题吗?如果有问题,我会进行编辑... - user2069871
看起来问题是 GCC 之间的配置版本不匹配。我正在尝试使用比另一个库编译时使用的更近期的版本来编译该库。 - user2069871
3个回答

2

问题是GCC版本配置不匹配。

我使用的库是用GCC 5.4编译的,但我正在使用GCC 7.4。

当我使用和库相同的GCC编译我的代码时,这个奇怪的链接问题就消失了!


2

也许将来会有人受益。对我而言,问题是由一个从基础抽象类派生的类在 .hpp 文件中声明了一个虚函数,但在 .cpp 文件中没有定义该函数。


0

我注意到构造函数没有被实现。这可能会导致问题吗?


我认为它是...我刚刚拼错了...我正在更正。但我仍然遇到那个问题... - user2069871

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接