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?
Forum Updated to NodeBB v4.3 + New Features

How to avoid repeated execution of loading Qlibrary?

Scheduled Pinned Locked Moved Unsolved General and Desktop
23 Posts 5 Posters 1.6k 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