Russian Qt Forum

Qt => Общие вопросы => Тема начата: ti0 от Декабрь 02, 2017, 01:09



Название: Qt plugin передача класса
Отправлено: ti0 от Декабрь 02, 2017, 01:09
Реализую передачу в плагине стороннего класса. Интерфейс:
Код:
class TaskInterface
{
public:
    virtual ~TaskInterface() {}
    virtual TestA* factory() const = 0;
};

Плагин:
Код:
class Plugin : public QObject, TaskInterface
{
    Q_OBJECT
    Q_PLUGIN_METADATA(IID "com.R.TaskInterface/1.0" FILE "plugin.json")
    Q_INTERFACES(TaskInterface)

public:
    TestA* factory() const
    {
        return new TestA;
    }

};
Все работает, плагин грузится.

Теперь мне нужно переопределить класс TestA в плагине. Для теста создал класс TestB, который наследуется от TestA. В TestB ничего не менял и не добавлял. Приинклюдил в хедеру плагина, и больше ничего в хедере не менял:

Код:
#include "testb.h"

class Plugin : public QObject, TaskInterface
{
    Q_OBJECT
    Q_PLUGIN_METADATA(IID "com.R.TaskInterface/1.0" FILE "plugin.json")
    Q_INTERFACES(TaskInterface)

public:
    TestA* factory() const
    {
        return new TestA;
    }

};

Плагин не грузится ... с ошибкой "undefined symbol: _ZN5TestA16staticMetaObjectE)". В идеале я хочу в методе TestA* factory() const
создать экземпляр класса TestB и передать его, но даже его обьявление не работает. WFT?