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. How to avoid repeated execution of loading Qlibrary?
Qt 6.11 is out! See what's new in the release blog

How to avoid repeated execution of loading Qlibrary?

Scheduled Pinned Locked Moved Unsolved General and Desktop
23 Posts 5 Posters 2.8k Views 1 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.
  • RogerBretonR Offline
    RogerBretonR Offline
    RogerBreton
    wrote on last edited by
    #14

    I wanted to try the changes in debug mode but I immediately ran into the following error message :

    Error.jpg

    Time for a cup of coffee...

    Roger Breton
    www.graxx.ca

    JonBJ 1 Reply Last reply
    0
    • Christian EhrlicherC Online
      Christian EhrlicherC Online
      Christian Ehrlicher
      Lifetime Qt Champion
      wrote on last edited by
      #15

      @RogerBreton said in How to avoid repeated execution of loading Qlibrary?:

      Time for a cup of coffee...

      I would rather say - time for a debugging session :)

      Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
      Visit the Qt Academy at https://academy.qt.io/catalog

      1 Reply Last reply
      1
      • RogerBretonR RogerBreton

        I wanted to try the changes in debug mode but I immediately ran into the following error message :

        Error.jpg

        Time for a cup of coffee...

        JonBJ Offline
        JonBJ Offline
        JonB
        wrote on last edited by JonB
        #16

        @RogerBreton
        If, from what you have shown, you presently have:

           bool Result;
            Result = myLib.load();
        RB_StartMeasurement = reinterpret_cast<Fn6>(myLib.resolve("FDX_StartMeasurement"));
        sdkError = RB_StartMeasurement();
        

        without checking the intermediate return result variables, RB_StartMeasurement may be nullptr. Then RB_StartMeasurement() would cause a SIGSEGV?

        RogerBretonR 1 Reply Last reply
        1
        • JonBJ JonB

          @RogerBreton
          If, from what you have shown, you presently have:

             bool Result;
              Result = myLib.load();
          RB_StartMeasurement = reinterpret_cast<Fn6>(myLib.resolve("FDX_StartMeasurement"));
          sdkError = RB_StartMeasurement();
          

          without checking the intermediate return result variables, RB_StartMeasurement may be nullptr. Then RB_StartMeasurement() would cause a SIGSEGV?

          RogerBretonR Offline
          RogerBretonR Offline
          RogerBreton
          wrote on last edited by
          #17

          @JonB I don't dare say RB_StartMeasurement may be a nullptr in ALL LIKELIHOOD, and that maybe the cause of the segmentation fault. That is exactly my hypothesis. So, if that is the case, this proves my intuition : where is the application getting the DLL from? If its name isn't specified anywhere? It is not in the PRO file.

          I was thinking, perhaps, I should test whether the library is loaded before calling RB_StartMeasurement? And if it is not loaded, then load it? But that would not explain why I get the SIGSEV when the application tries to load? Or is it happening in the constructor?

          Somehow, I must be missing some important piece of the puzzle -- I'll continue to look around but I am optimistic...

          Roger Breton
          www.graxx.ca

          JonBJ 1 Reply Last reply
          0
          • RogerBretonR RogerBreton

            @JonB I don't dare say RB_StartMeasurement may be a nullptr in ALL LIKELIHOOD, and that maybe the cause of the segmentation fault. That is exactly my hypothesis. So, if that is the case, this proves my intuition : where is the application getting the DLL from? If its name isn't specified anywhere? It is not in the PRO file.

            I was thinking, perhaps, I should test whether the library is loaded before calling RB_StartMeasurement? And if it is not loaded, then load it? But that would not explain why I get the SIGSEV when the application tries to load? Or is it happening in the constructor?

            Somehow, I must be missing some important piece of the puzzle -- I'll continue to look around but I am optimistic...

            JonBJ Offline
            JonBJ Offline
            JonB
            wrote on last edited by
            #18

            @RogerBreton

            bool Result;
            Result = myLib.load();
            if (!Result)
                qDebug() << "This is bad...";
            RB_StartMeasurement = reinterpret_cast<Fn6>(myLib.resolve("FDX_StartMeasurement"));
            if (RB_StartMeasurement  == nullptr)
                qDebug() << "This is bad.  Get ready for SEGV if you call RB_StartMeasurement() now...";
            sdkError = RB_StartMeasurement();
            
            1 Reply Last reply
            0
            • RogerBretonR Offline
              RogerBretonR Offline
              RogerBreton
              wrote on last edited by
              #19

              I declared the RB_StartMeasurement as NULL in mainwindow.h :

              class MainWindow : public QMainWindow
              {
                  Q_OBJECT
                  QLibrary myLib;
              
                  typedef DEVICE_ERROR_TYPES(__stdcall* Fn6)(void);
                  Fn6 RB_StartMeasurement = NULL;
              
              

              But I still get the Segmentation Fault...

              Roger Breton
              www.graxx.ca

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

                Hi,

                Did you implement @JonB´s suggestion ?

                Start in debug and you should see exactly where it fails.

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

                RogerBretonR 1 Reply Last reply
                0
                • SGaistS SGaist

                  Hi,

                  Did you implement @JonB´s suggestion ?

                  Start in debug and you should see exactly where it fails.

                  RogerBretonR Offline
                  RogerBretonR Offline
                  RogerBreton
                  wrote on last edited by
                  #21

                  @SGaist That is exactly what I do :

                  I found the culprit...

                  DEVICE_ERROR_TYPES sdkError = RB_RegisterDeviceEventHandler(EventNotice);
                  
                  

                  The above function is a static member function declared in SomeClassName... which was working fine before ... The EventNotice function is also part of the same class.

                  Roger Breton
                  www.graxx.ca

                  1 Reply Last reply
                  0
                  • RogerBretonR Offline
                    RogerBretonR Offline
                    RogerBreton
                    wrote on last edited by
                    #22

                    For some reason (?), the EventNotice "address" is garbage :

                    EventNotice 2372415452829272149 void (DEVICE_eEventCode, uint32_km, DEVICE_ERROR_TYPES)

                    It should be a proper address like 0x00007ff739a21970.
                    I tried restarting QT Creator many times to no avail.

                    Roger Breton
                    www.graxx.ca

                    1 Reply Last reply
                    0
                    • RogerBretonR Offline
                      RogerBretonR Offline
                      RogerBreton
                      wrote on last edited by
                      #23

                      Thank you all for your patient help.
                      I'm putting QT on the backburner for now.
                      Too bad. Such a nice environment.

                      Roger Breton
                      www.graxx.ca

                      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