Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. QPluginLoader cannot load plugin [solved]
QtWS25 Last Chance

QPluginLoader cannot load plugin [solved]

Scheduled Pinned Locked Moved General and Desktop
qpluginloaderplugin
26 Posts 5 Posters 14.8k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • L Offline
    L Offline
    LeaA
    wrote on 14 May 2015, 08:52 last edited by LeaA
    #9

    here is the code:

    the h file of the interface:

    #ifndef INPLUGININTERFACE_H
    #define INPLUGININTERFACE_H
    #pragma once

    #include <QtPlugin>
    #include <QObject>
    #include <QtCore>

    #include "ProcessingInterface.h"
    #include "setting.h"
    #include "msstorage.h"
    #include "myplot.h"

    /**
    @brief The InPluginInterface class
    Factory of prossesingInterface
    /
    class InPluginInterface//:public QObject
    {
    // Q_OBJECT
    public:
    virtual ~InPluginInterface() = default;
    virtual std::shared_ptr <ProcessingInterface> getProcessing
    (myPlotInterface& plot,
    QVector<ReducingInterface
    > reduceData)=0;
    };

    Q_DECLARE_INTERFACE(InPluginInterface,"InPluginImp")

    #endif // INPLUGININTERFACE_H

    the h file of the class that implements the plugin:

    #ifndef INPLUGINIMP_H
    #define INPLUGINIMP_H

    #include <QtScript/QScriptEngine>
    #include <QtScript/QScriptValue>
    #include <memory>

    #include "inPluginInterface.h"
    #include "ProcessingInterface.h"
    #include "impprocessing.h"

    class Q_DECL_EXPORT InPluginImp :public QObject,public InPluginInterface
    {
    //Q_OBJECT
    Q_PLUGIN_METADATA(IID "InPluginImp")
    Q_INTERFACES(InPluginInterface)

    public:
    InPluginImp();

    ~InPluginImp()=default;
    
    // InPluginInterface interface
    
    std::shared_ptr<ProcessingInterface> getProcessing
    (myPlotInterface &plot,
     QVector<ReducingInterface *> msStorages) override;
    

    };

    #endif // INPLUGINIMP_H

    the cpp file:

    #include "inpluginimp.h"

    InPluginImp::InPluginImp()
    {

    }

    std::shared_ptr <ProcessingInterface> InPluginImp::getProcessing
    ( myPlotInterface& plot,
    QVector<ReducingInterface*> msStorages)

    {
    std::shared_ptr <ProcessingInterface> p=std::make_shared<impProcessing>(plot ,msStorages);
    return p;
    }

    the function that loading the plugin:

    void Manager::loadPlugins()
    {
    pluginsDir = QDir(qApp->applicationDirPath());

    #if defined(Q_OS_WIN)
    if (pluginsDir.dirName().toLower() == "debug" || pluginsDir.dirName().toLower() == "release")
    pluginsDir.cdUp();
    #elif defined(Q_OS_MAC)
    if (pluginsDir.dirName() == "MacOS") {
    pluginsDir.cdUp();
    pluginsDir.cdUp();
    pluginsDir.cdUp();
    }
    #endif
    //search the file that there the plugin declared
    pluginsDir.cd("plugins");

    foreach (QString fileName, pluginsDir.entryList(QDir::Files)) {
        QPluginLoader loader(pluginsDir.absoluteFilePath(fileName));
      
        QObject *plugin = loader.instance();
    
        if (plugin) {
    
            pluginFileNames += fileName;
    
        }
    }
    

    }

    what is the problem here? why the QPluginLoader doesn't load the plugin? why the QLibraryPrivate::IsNotAPlugin (1)????

    thanks!

    1 Reply Last reply
    0
    • L Offline
      L Offline
      LeaA
      wrote on 14 May 2015, 11:27 last edited by
      #10

      the problem solved

      1 Reply Last reply
      0
      • G Offline
        G Offline
        GrahamL
        wrote on 14 May 2015, 11:50 last edited by
        #11

        Hi
        What was the problem and how did you solve it?

        L 1 Reply Last reply 14 May 2015, 12:15
        0
        • G GrahamL
          14 May 2015, 11:50

          Hi
          What was the problem and how did you solve it?

          L Offline
          L Offline
          LeaA
          wrote on 14 May 2015, 12:15 last edited by LeaA
          #12

          @GrahamL

          the problem was that the plugin wasn't created good and the QPluginLoader wasn't recognized it as a plugin.

          i returned the macro Q_OBJECT to InPluginImp class and i moved the inheritance from QOBJECT to the InPluginInterface class.

          1 Reply Last reply
          0
          • G Offline
            G Offline
            GrahamL
            wrote on 14 May 2015, 13:01 last edited by
            #13

            Ah
            Please mark the topic as SOLVED
            Thanks

            1 Reply Last reply
            0
            • L Offline
              L Offline
              LeaA
              wrote on 18 May 2015, 07:40 last edited by LeaA
              #14

              hi,
              now i getting this error:
              C:\workspace\16-5-15\src\mainProject\build-mainProject-Desktop_Qt_5_3_MinGW_32bit-Debug\VisualReceiverErrorsAnalysis\debug\moc_inpluginimp.cpp:149: error: undefined reference to `InPluginImp::InPluginImp()'

              and this one:
              moc_inpluginimp.cpp:-1: error: undefined reference to `InPluginImp::getProcessing(myPlotInterface&, QVector<ReducingInterface*>)'

              collect2.exe:-1: error: error: ld returned 1 exit status

              there is a solution for it?..

              1 Reply Last reply
              0
              • S Offline
                S Offline
                SGaist
                Lifetime Qt Champion
                wrote on 18 May 2015, 07:45 last edited by SGaist
                #15

                Did you properly implement both these functions ? Do you build the corresponding cpp file ?

                Interested in AI ? www.idiap.ch
                Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                L 2 Replies Last reply 18 May 2015, 07:48
                0
                • S SGaist
                  18 May 2015, 07:45

                  Did you properly implement both these functions ? Do you build the corresponding cpp file ?

                  L Offline
                  L Offline
                  LeaA
                  wrote on 18 May 2015, 07:48 last edited by
                  #16

                  @SGaist

                  yes..

                  1 Reply Last reply
                  0
                  • S SGaist
                    18 May 2015, 07:45

                    Did you properly implement both these functions ? Do you build the corresponding cpp file ?

                    L Offline
                    L Offline
                    LeaA
                    wrote on 18 May 2015, 07:54 last edited by
                    #17

                    @SGaist

                    it seems like a problem with the moc.cpp file of inpluginimp

                    1 Reply Last reply
                    0
                    • L Offline
                      L Offline
                      LeaA
                      wrote on 18 May 2015, 08:17 last edited by
                      #18

                      when i putting down the Q_OBJECT macro from the inPluginImp class the errors gone but the again the first problem in this topic comming back

                      1 Reply Last reply
                      0
                      • S Offline
                        S Offline
                        SGaist
                        Lifetime Qt Champion
                        wrote on 18 May 2015, 08:22 last edited by
                        #19

                        When adding/removing the Q_OBJECT macro, do you re-run qmake before building ?

                        Interested in AI ? www.idiap.ch
                        Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                        L 2 Replies Last reply 18 May 2015, 08:24
                        0
                        • S SGaist
                          18 May 2015, 08:22

                          When adding/removing the Q_OBJECT macro, do you re-run qmake before building ?

                          L Offline
                          L Offline
                          LeaA
                          wrote on 18 May 2015, 08:24 last edited by
                          #20

                          @SGaist

                          yes

                          1 Reply Last reply
                          0
                          • S SGaist
                            18 May 2015, 08:22

                            When adding/removing the Q_OBJECT macro, do you re-run qmake before building ?

                            L Offline
                            L Offline
                            LeaA
                            wrote on 18 May 2015, 08:46 last edited by
                            #21

                            @SGaist

                            it says to me that the moc_inpluginimp.cpp file isn't found..
                            but the file is in the build directory of the project in the debuge directory

                            1 Reply Last reply
                            0
                            • J Offline
                              J Offline
                              jalomic
                              wrote on 18 May 2015, 09:04 last edited by
                              #22

                              @LeaA said:

                              #ifndef INPLUGININTERFACE_H
                              #define INPLUGININTERFACE_H
                              #pragma once
                              .....
                              .....
                              #endif // INPLUGININTERFACE_H

                              T_T WTF ?

                              L 1 Reply Last reply 18 May 2015, 09:05
                              0
                              • J jalomic
                                18 May 2015, 09:04

                                @LeaA said:

                                #ifndef INPLUGININTERFACE_H
                                #define INPLUGININTERFACE_H
                                #pragma once
                                .....
                                .....
                                #endif // INPLUGININTERFACE_H

                                T_T WTF ?

                                L Offline
                                L Offline
                                LeaA
                                wrote on 18 May 2015, 09:05 last edited by
                                #23

                                @jalomic

                                sorry,i didn't understand you..

                                J 2 Replies Last reply 18 May 2015, 09:47
                                0
                                • L LeaA
                                  18 May 2015, 09:05

                                  @jalomic

                                  sorry,i didn't understand you..

                                  J Offline
                                  J Offline
                                  jalomic
                                  wrote on 18 May 2015, 09:47 last edited by
                                  #24

                                  @jalomic said:

                                  #pragma once

                                  #ifndef INPLUGININTERFACE_H and #pragma once - it is the same thinks.
                                  You not need #ifndef INPLUGININTERFACE_H if you have #pragma once
                                  Sorry for offtop

                                  1 Reply Last reply
                                  0
                                  • L LeaA
                                    18 May 2015, 09:05

                                    @jalomic

                                    sorry,i didn't understand you..

                                    J Offline
                                    J Offline
                                    jalomic
                                    wrote on 18 May 2015, 09:48 last edited by
                                    #25

                                    @LeaA Try to disable "shadow build"

                                    L 1 Reply Last reply 18 May 2015, 10:19
                                    0
                                    • J jalomic
                                      18 May 2015, 09:48

                                      @LeaA Try to disable "shadow build"

                                      L Offline
                                      L Offline
                                      LeaA
                                      wrote on 18 May 2015, 10:19 last edited by
                                      #26

                                      @jalomic

                                      I put down some header files from the pro. file and it solved

                                      1 Reply Last reply
                                      0

                                      18/26

                                      18 May 2015, 08:17

                                      • Login

                                      • Login or register to search.
                                      18 out of 26
                                      • First post
                                        18/26
                                        Last post
                                      0
                                      • Categories
                                      • Recent
                                      • Tags
                                      • Popular
                                      • Users
                                      • Groups
                                      • Search
                                      • Get Qt Extensions
                                      • Unsolved