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 LeaA
    14 May 2015, 08:08

    @GrahamL

    this link useful for plugins for widgets..

    my plugin isn't for widget...

    G Offline
    G Offline
    GrahamL
    wrote on 14 May 2015, 08:34 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 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

                                          16/26

                                          18 May 2015, 07:48

                                          • Login

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