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]

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.
  • G GrahamL

    Hi
    I found this link useful
    http://canvoki.net/Codders/qtpluginnotloading.html

    HTH

    L Offline
    L Offline
    LeaA
    wrote on last edited by
    #6

    @GrahamL

    this link useful for plugins for widgets..

    my plugin isn't for widget...

    G 1 Reply Last reply
    0
    • L LeaA

      @GrahamL

      this link useful for plugins for widgets..

      my plugin isn't for widget...

      G Offline
      G Offline
      GrahamL
      wrote on last edited by
      #7

      @LeaA

      Its hard to guess without seeing your code
      Is it possible for you to share your class definitions?

      1 Reply Last reply
      0
      • L Offline
        L Offline
        LeaA
        wrote on last edited by
        #8

        why is the QLibraryPrivate::IsNotAPlugin (1)????

        1 Reply Last reply
        0
        • L Offline
          L Offline
          LeaA
          wrote on 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 last edited by
            #10

            the problem solved

            1 Reply Last reply
            0
            • G Offline
              G Offline
              GrahamL
              wrote on last edited by
              #11

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

              L 1 Reply Last reply
              0
              • G GrahamL

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

                L Offline
                L Offline
                LeaA
                wrote on 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 last edited by
                  #13

                  Ah
                  Please mark the topic as SOLVED
                  Thanks

                  1 Reply Last reply
                  0
                  • L Offline
                    L Offline
                    LeaA
                    wrote on 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
                    • SGaistS Offline
                      SGaistS Offline
                      SGaist
                      Lifetime Qt Champion
                      wrote on 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
                      0
                      • SGaistS SGaist

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

                        L Offline
                        L Offline
                        LeaA
                        wrote on last edited by
                        #16

                        @SGaist

                        yes..

                        1 Reply Last reply
                        0
                        • SGaistS SGaist

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

                          L Offline
                          L Offline
                          LeaA
                          wrote on 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 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
                            • SGaistS Offline
                              SGaistS Offline
                              SGaist
                              Lifetime Qt Champion
                              wrote on 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
                              0
                              • SGaistS SGaist

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

                                L Offline
                                L Offline
                                LeaA
                                wrote on last edited by
                                #20

                                @SGaist

                                yes

                                1 Reply Last reply
                                0
                                • SGaistS SGaist

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

                                  L Offline
                                  L Offline
                                  LeaA
                                  wrote on 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 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
                                    0
                                    • J jalomic

                                      @LeaA said:

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

                                      T_T WTF ?

                                      L Offline
                                      L Offline
                                      LeaA
                                      wrote on last edited by
                                      #23

                                      @jalomic

                                      sorry,i didn't understand you..

                                      J 2 Replies Last reply
                                      0
                                      • L LeaA

                                        @jalomic

                                        sorry,i didn't understand you..

                                        J Offline
                                        J Offline
                                        jalomic
                                        wrote on 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

                                          @jalomic

                                          sorry,i didn't understand you..

                                          J Offline
                                          J Offline
                                          jalomic
                                          wrote on last edited by
                                          #25

                                          @LeaA Try to disable "shadow build"

                                          L 1 Reply Last reply
                                          0

                                          • Login

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