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”可能是一个“函数指针”,指向无法找到的东西(析构函数?)......

但是,我在互联网上没有找到任何非常清楚的东西......

4

3 回答 3

2

问题是 GCC 之间的配置版本不匹配。

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

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

于 2020-03-04T09:30:49.420 回答
0

我确实注意到构造函数尚未实现。这会导致问题吗?

于 2013-03-21T20:34:20.707 回答
0

Maybe it will help somebody in the future.. For me the problem was caused by a declaration of a virtual function in class that derives from the base abstract class (inside .hpp file) but there was no definition of the function in .cpp file.

于 2021-01-12T14:59:49.420 回答