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.
  • L Offline
    L Offline
    LeaA
    wrote on 14 May 2015, 08:40 last edited by
    #8

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

    1 Reply Last reply
    0
    • 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

                                        17/26

                                        18 May 2015, 07:54

                                        • Login

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