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. Compiler Error due to Build process
Forum Updated to NodeBB v4.3 + New Features

Compiler Error due to Build process

Scheduled Pinned Locked Moved Solved General and Desktop
21 Posts 3 Posters 6.4k 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.
  • Pablo J. RoginaP Pablo J. Rogina

    @socke said in Compiler Error due to Build process:

    I had to clean and build the project and it worked.

    Glad you solved the issue. Please don't forget to mark your post as such!

    S Offline
    S Offline
    socke
    wrote on last edited by socke
    #12

    @Pablo-J-Rogina

    Hi Pablo, it is not necessarily solved just yet. Until I manage to do a proper function call, then I would say it's solved.

      typedef pv_status_t (*pv_porcupine_init)(const char *,
                                               int32_t,
                                                const char *const *,
                                                const float *,
                                                pv_porcupine_t **);
    
    pv_status_t pv_porcupine_init = library.resolve("pv_porcupine_init");
    
    if (pv_porcupine_init)
    {
          pv_porcupine_t *handle;
          pv_status_t status = pv_porcupine_init(model_path, 1, &keyword_path, &sensitivity, &handle);
    
          if (status != PV_STATUS_SUCCESS)
          {
              qDebug() << "PV_STATUS_SUCCESS";
          }
      }
    

    I am not entirely sure how to do this but I want to load the function pv_porcupine_init().
    Based on this tutorial, what does this do exactly? And what is that in my scenario? Is pv_status_t correct in my case?

    typedef void (*MyPrototype)();
    

    I keep getting:

    \main.cpp:81: error: C2440: 'initializing': cannot convert from 'QFunctionPointer' to 'MyPrototype'
    
    mrjjM 1 Reply Last reply
    0
    • S socke

      @Pablo-J-Rogina

      Hi Pablo, it is not necessarily solved just yet. Until I manage to do a proper function call, then I would say it's solved.

        typedef pv_status_t (*pv_porcupine_init)(const char *,
                                                 int32_t,
                                                  const char *const *,
                                                  const float *,
                                                  pv_porcupine_t **);
      
      pv_status_t pv_porcupine_init = library.resolve("pv_porcupine_init");
      
      if (pv_porcupine_init)
      {
            pv_porcupine_t *handle;
            pv_status_t status = pv_porcupine_init(model_path, 1, &keyword_path, &sensitivity, &handle);
      
            if (status != PV_STATUS_SUCCESS)
            {
                qDebug() << "PV_STATUS_SUCCESS";
            }
        }
      

      I am not entirely sure how to do this but I want to load the function pv_porcupine_init().
      Based on this tutorial, what does this do exactly? And what is that in my scenario? Is pv_status_t correct in my case?

      typedef void (*MyPrototype)();
      

      I keep getting:

      \main.cpp:81: error: C2440: 'initializing': cannot convert from 'QFunctionPointer' to 'MyPrototype'
      
      mrjjM Offline
      mrjjM Offline
      mrjj
      Lifetime Qt Champion
      wrote on last edited by
      #13

      @socke
      Hi
      The is typedef pv_status_t (*pv_porcupine_init) ...
      is the function prototype/definition
      pv_status_t pv_porcupine_init (...)
      and then we try to bind it to the actual function in the DLL
      library.resolve("pv_porcupine_init");

      so does it go into
      if (pv_porcupine_init)
      {
      <--- ?

      S 1 Reply Last reply
      1
      • mrjjM mrjj

        @socke
        Hi
        The is typedef pv_status_t (*pv_porcupine_init) ...
        is the function prototype/definition
        pv_status_t pv_porcupine_init (...)
        and then we try to bind it to the actual function in the DLL
        library.resolve("pv_porcupine_init");

        so does it go into
        if (pv_porcupine_init)
        {
        <--- ?

        S Offline
        S Offline
        socke
        wrote on last edited by
        #14

        @mrjj

        Hey man, I figured that out.

        typedef pv_status_t (*MyPrototype)(const char *,
                                             int32_t,
                                             const char *const *,
                                             const float *,
                                             pv_porcupine_t **);
        
          auto pv_porcupine_init = library.resolve("pv_porcupine_init");
        
          if (pv_porcupine_init)
          {
              pv_porcupine_t *handle;
        
              pv_status_t status = pv_porcupine_init(model_path, 1, &keyword_path, &sensitivity, &handle);
        }
        
        >> \main.cpp:88: error: C2197: 'void (__cdecl *)(void)': too many arguments for call
        

        Seems as if my typedef declaration is incorrect? From what I can see, it corresponds to the same method in pv_porcupine.h.

        mrjjM 1 Reply Last reply
        0
        • S socke

          @mrjj

          Hey man, I figured that out.

          typedef pv_status_t (*MyPrototype)(const char *,
                                               int32_t,
                                               const char *const *,
                                               const float *,
                                               pv_porcupine_t **);
          
            auto pv_porcupine_init = library.resolve("pv_porcupine_init");
          
            if (pv_porcupine_init)
            {
                pv_porcupine_t *handle;
          
                pv_status_t status = pv_porcupine_init(model_path, 1, &keyword_path, &sensitivity, &handle);
          }
          
          >> \main.cpp:88: error: C2197: 'void (__cdecl *)(void)': too many arguments for call
          

          Seems as if my typedef declaration is incorrect? From what I can see, it corresponds to the same method in pv_porcupine.h.

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

          @socke
          what is line 88 ?

          S 1 Reply Last reply
          0
          • mrjjM mrjj

            @socke
            what is line 88 ?

            S Offline
            S Offline
            socke
            wrote on last edited by
            #16

            @mrjj said in Compiler Error due to Build process:

            @socke
            what is line 88 ?

            Line 88 would be:

            pv_status_t status = pv_porcupine_init(model_path, 1, &keyword_path, &sensitivity, &handle);
            
            mrjjM 1 Reply Last reply
            0
            • S socke

              @mrjj said in Compiler Error due to Build process:

              @socke
              what is line 88 ?

              Line 88 would be:

              pv_status_t status = pv_porcupine_init(model_path, 1, &keyword_path, &sensitivity, &handle);
              
              mrjjM Offline
              mrjjM Offline
              mrjj
              Lifetime Qt Champion
              wrote on last edited by
              #17

              @socke
              maybe the auto dont get it right ?
              try with
              pv_status_t pv_porcupine_init =
              if it complains then try to cast it

              S 1 Reply Last reply
              0
              • mrjjM mrjj

                @socke
                maybe the auto dont get it right ?
                try with
                pv_status_t pv_porcupine_init =
                if it complains then try to cast it

                S Offline
                S Offline
                socke
                wrote on last edited by
                #18

                @mrjj

                I did it :D

                typedef pv_status_t (*_pv_porcupine_init)(const char *, int32_t, const char *const *, const float *, pv_porcupine_t **);
                
                   _pv_porcupine_init pv_porcupine_init = (_pv_porcupine_init) library.resolve("pv_porcupine_init");
                
                   if (pv_porcupine_init)
                   {
                       pv_porcupine_t *handle;
                       qDebug() << "PV_STATUS_SUCCESS";
                
                       pv_status_t status = pv_porcupine_init(model_path, 1, &keyword_path, &sensitivity, &handle);
                }
                

                I believe the auto was not casting correctly, I believe (_pv_porcupine_init) fixed it.

                Do you know how I know? The compiler said:
                [ERROR] loading keyword file #0 failed with 'IO_ERROR'. Which means it called the function and the function returned that error message from my bad input, which is a step forward programmer wise haha

                mrjjM 1 Reply Last reply
                0
                • S socke

                  @mrjj

                  I did it :D

                  typedef pv_status_t (*_pv_porcupine_init)(const char *, int32_t, const char *const *, const float *, pv_porcupine_t **);
                  
                     _pv_porcupine_init pv_porcupine_init = (_pv_porcupine_init) library.resolve("pv_porcupine_init");
                  
                     if (pv_porcupine_init)
                     {
                         pv_porcupine_t *handle;
                         qDebug() << "PV_STATUS_SUCCESS";
                  
                         pv_status_t status = pv_porcupine_init(model_path, 1, &keyword_path, &sensitivity, &handle);
                  }
                  

                  I believe the auto was not casting correctly, I believe (_pv_porcupine_init) fixed it.

                  Do you know how I know? The compiler said:
                  [ERROR] loading keyword file #0 failed with 'IO_ERROR'. Which means it called the function and the function returned that error message from my bad input, which is a step forward programmer wise haha

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

                  hi
                  the most exciting part is if you see the
                  qDebug() << "PV_STATUS_SUCCESS"; ?

                  Well this has always been a bit hairy, i mean manual resolving function addresses from a DLL :)

                  S 1 Reply Last reply
                  0
                  • mrjjM mrjj

                    hi
                    the most exciting part is if you see the
                    qDebug() << "PV_STATUS_SUCCESS"; ?

                    Well this has always been a bit hairy, i mean manual resolving function addresses from a DLL :)

                    S Offline
                    S Offline
                    socke
                    wrote on last edited by
                    #20

                    @mrjj
                    Yes, I will mark this as solved now.
                    However, you do know what is the most pain? I just realized that there exists no free open source trigger word detection repository :( apparently, the audio files you use for Porcupine expires after 30 days, in that sense, it's still free but I don't want to manually update my audio files.

                    Thanks a lot for the help btw.

                    mrjjM 1 Reply Last reply
                    0
                    • S socke

                      @mrjj
                      Yes, I will mark this as solved now.
                      However, you do know what is the most pain? I just realized that there exists no free open source trigger word detection repository :( apparently, the audio files you use for Porcupine expires after 30 days, in that sense, it's still free but I don't want to manually update my audio files.

                      Thanks a lot for the help btw.

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

                      @socke

                      Victory !

                      Hmm. That is good to know and a big bummer for you.
                      So was not such huge joy even you won and got it to work.
                      On the bright side, you learn alot about linking.

                      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