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. Loading my first newly built plugin while debugging

Loading my first newly built plugin while debugging

Scheduled Pinned Locked Moved Solved General and Desktop
12 Posts 3 Posters 3.1k Views 2 Watching
  • 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.
  • SGaistS SGaist

    Hi,

    You should set the QT_DEBUG_PLUGINS environnement variable to 1 and re-run your application. You’ll get more information about what is happening.

    M Offline
    M Offline
    mgreenish
    wrote on last edited by
    #3

    @SGaist said in Loading my first newly built plugin while debugging:

    QT_DEBUG_PLUGINS

    Great! Now I get a message in the Application Output:

    QMachOParser: '/Users/greanie/Work/HapticX/Engineering/Software/plugins/libreactionsserverplugin_debug.dylib' is not a Qt plugin
    

    So somehow my plugin is not properly set up.

    Below is my .pro file:

    TEMPLATE        = lib                                       # making a library, not an executible
    CONFIG         += plugin                                    #
    QT             += widgets network gui
    INCLUDEPATH    += ../vibecreator/vibecreator/               # include path to plugin interface
    TARGET          = $$qtLibraryTarget(reactionsserverplugin)  # name of the library file in which the plugin will be stored, should be same as name of the plugin
    DESTDIR         = ../plugins
    
    # install
    target.path = ../plugins
    INSTALLS += target
    
    CONFIG += install_ok  # Do not cargo-cult this!
    
    SOURCES += reactionsserverplugin.cpp
    
    HEADERS  += reactionsserverplugin.h
    
    FORMS += \
        reactionfileform.ui
    
    DISTFILES += \
        reactionsserver.plugin.json
    

    Below is my plugin header:

    #include <QObject>
    #include <QWidget>
    #include <QtPlugin>
    #include <QDialog>
    
    //#include "../vibecreator/vibecreator/reactionsserverinterface.h"
    #include "reactionsserverinterface.h"
    #include "creatorwindow.h"
    
    namespace Ui {
        class ReactionServerFileForm;
    }
    
    class ReactionsServerPlugin : public QWidget, ReactionsServerInterface
    {
        Q_OBJECT
        Q_PLUGIN_METADATA( IID "org.qt-project.Qt.AddHaptics.ReactionsServerInterface" FILE "reactionsserver.plugin.json" )
        Q_INTERFACES(ReactionsServerInterface)
    
    public:
        ReactionsServerPlugin( CreatorWindow* parent ) { setParent( parent ); } // makes this qwidget a child window
    
        void createForm();  // override;
        void showForm();    // override
        void hideForm();
    
    private:
        Ui::ReactionServerFileForm* ui;
    
    };
    
    #endif // REACTIONSSERVER_GLOBAL_H
    

    Below is my source:

    #include <QtWidgets>
    
    #include "reactionsserverplugin.h"
    #include "ui_reactionfileform.h"
    
    void ReactionsServerPlugin::createForm()
    {
        ui = new Ui::ReactionServerFileForm;
        ui->setupUi(this);
    }
    
    void ReactionsServerPlugin::showForm() {
        this->setVisible(true);
    }
    
    void ReactionsServerPlugin::hideForm() {
        this->setVisible(false);
    }
    

    It all compiles, as per the dylib file. Any ideas on what I might be doing wrong?

    1 Reply Last reply
    0
    • mrjjM Offline
      mrjjM Offline
      mrjj
      Lifetime Qt Champion
      wrote on last edited by mrjj
      #4

      Hi
      For the ReactionsServerInterface
      Do you have something like
      Q_DECLARE_INTERFACE(ReactionsServerInterface, "in.forwardbias.tool/1.0")
      under the class definition ?

      M 1 Reply Last reply
      1
      • mrjjM mrjj

        Hi
        For the ReactionsServerInterface
        Do you have something like
        Q_DECLARE_INTERFACE(ReactionsServerInterface, "in.forwardbias.tool/1.0")
        under the class definition ?

        M Offline
        M Offline
        mgreenish
        wrote on last edited by
        #5

        @mrjj I didn't put my interface class in my past post because I figured my problem was a set up one with the plugin. But, here it is

        #ifndef REACTIONSSERVER_INTERFACE_H
        #define REACTIONSSERVER_INTERFACE_H
        
        class ReactionsServerInterface
        {
        
        public:
            virtual ~ReactionsServerInterface(){}
            virtual void createForm() = 0;
            virtual void showForm() = 0;
            virtual void hideForm() = 0;
        };
        
        #define ReactinonsSeverInterface_iid "org.qt-project.Qt.AddHaptics.ReactionsServerInterface"
        
        Q_DECLARE_INTERFACE(ReactionsServerInterface, ReactinonsSeverInterface_iid)
        
        #endif // REACTIONSSERVER_H
        
        I do have the Q_DECLARE_INTERFACE .
        

        The only thing I can find that is wrong in my plugin is that I get a warning that reactionsserver.plugin.json doesn't hold a valid json object. But I don't know how that would influence whether or not my plugin is a valid plugin.

        mrjjM 1 Reply Last reply
        0
        • M mgreenish

          @mrjj I didn't put my interface class in my past post because I figured my problem was a set up one with the plugin. But, here it is

          #ifndef REACTIONSSERVER_INTERFACE_H
          #define REACTIONSSERVER_INTERFACE_H
          
          class ReactionsServerInterface
          {
          
          public:
              virtual ~ReactionsServerInterface(){}
              virtual void createForm() = 0;
              virtual void showForm() = 0;
              virtual void hideForm() = 0;
          };
          
          #define ReactinonsSeverInterface_iid "org.qt-project.Qt.AddHaptics.ReactionsServerInterface"
          
          Q_DECLARE_INTERFACE(ReactionsServerInterface, ReactinonsSeverInterface_iid)
          
          #endif // REACTIONSSERVER_H
          
          I do have the Q_DECLARE_INTERFACE .
          

          The only thing I can find that is wrong in my plugin is that I get a warning that reactionsserver.plugin.json doesn't hold a valid json object. But I don't know how that would influence whether or not my plugin is a valid plugin.

          mrjjM Offline
          mrjjM Offline
          mrjj
          Lifetime Qt Champion
          wrote on last edited by
          #6

          @mgreenish
          I also got that message as far as i can recall but it still loaded.

          1 Reply Last reply
          0
          • SGaistS Offline
            SGaistS Offline
            SGaist
            Lifetime Qt Champion
            wrote on last edited by
            #7

            Can you show the json ?

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

            1 Reply Last reply
            0
            • M Offline
              M Offline
              mgreenish
              wrote on last edited by mgreenish
              #8

              I read in a post that it could be left blank, so that gave me an error that cased the compiler to error out. So I found this online and now I only get a warning:

              @{ "Keys": [ "reactionserveristhisplugin" ] }@
              

              Granted, I haven't figured out what is wrong with this structure as I didn't think this would be source of my error.

              The warning is:

              ../reactionsserverplugin.h:20: Warning: Plugin Metadata file "reactionsserver.plugin.json" does not contain a valid JSON object. Declaration will be ignored
              
              1 Reply Last reply
              0
              • SGaistS Offline
                SGaistS Offline
                SGaist
                Lifetime Qt Champion
                wrote on last edited by
                #9

                Might be silly but I wonder if it's because you have two dots in your file name.

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

                1 Reply Last reply
                0
                • M Offline
                  M Offline
                  mgreenish
                  wrote on last edited by
                  #10

                  That doesn't seem to be it:

                  ../reactionsserverplugin.h:20: Warning: Plugin Metadata file "reactionsserverplugin.json" does not contain a valid JSON object. Declaration will be ignored
                  
                  1 Reply Last reply
                  0
                  • SGaistS Offline
                    SGaistS Offline
                    SGaist
                    Lifetime Qt Champion
                    wrote on last edited by
                    #11

                    Again might be silly but did you try to lint your json file ? Might have a stray char somewhere that's messing things up.

                    {
                        "Keys": ["reactionserveristhisplugin"]
                    }
                    

                    Should be good.

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

                    M 1 Reply Last reply
                    0
                    • SGaistS SGaist

                      Again might be silly but did you try to lint your json file ? Might have a stray char somewhere that's messing things up.

                      {
                          "Keys": ["reactionserveristhisplugin"]
                      }
                      

                      Should be good.

                      M Offline
                      M Offline
                      mgreenish
                      wrote on last edited by
                      #12

                      @SGaist So it turns out that this file is optional. I removed it from the Q_PLUGIN_METADATA declaration and that seemed to resolve the warning. Now everything compiles and the dylib loads.

                      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