Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Mobile and Embedded
  4. How do i integrate my embedded C source codes (for my embedded linux board) with Qt GUI together?
Forum Updated to NodeBB v4.3 + New Features

How do i integrate my embedded C source codes (for my embedded linux board) with Qt GUI together?

Scheduled Pinned Locked Moved Solved Mobile and Embedded
33 Posts 4 Posters 9.0k 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.
  • jsulmJ jsulm

    @embdev Yes, it is. Include the C header file where your C function is declared.

    embdevE Offline
    embdevE Offline
    embdev
    wrote on last edited by
    #9

    @jsulm greatly appreciate for the directions! I'll try it out!

    1 Reply Last reply
    0
    • jsulmJ jsulm

      @embdev Yes, it is. Include the C header file where your C function is declared.

      embdevE Offline
      embdevE Offline
      embdev
      wrote on last edited by
      #10

      @jsulm suppose I've created a QtWidget project with main.cpp and mainwindow.cpp sources created. I've also created a simple UI with pushButton to run a particular f(x) in another source code (that access my embedded Linux target directly)

      #include "mainwindow.h"
      #include "ui_mainwindow.h"

      MainWindow::MainWindow(QWidget *parent) :
      QMainWindow(parent),
      ui(new Ui::MainWindow)
      {
      ui->setupUi(this);
      }

      MainWindow::~MainWindow()
      {
      delete ui;
      }

      void MainWindow::on_pushButton_clicked()
      {

      SAMPLE_VDEC_VdhH264();
      

      }

      The SAMPLE_VDEC_VdhH264(); is actually defined in my embedded source code as one of the options. Is it okay to add the function just like that? as I met with build error saying that that function is not declared in this scope.

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

        Hi
        You need to include the header file also

        #include "VDEC_VdhH264.H" or where ever
        SAMPLE_VDEC_VdhH264()
        is declared.

        embdevE 1 Reply Last reply
        2
        • mrjjM mrjj

          Hi
          You need to include the header file also

          #include "VDEC_VdhH264.H" or where ever
          SAMPLE_VDEC_VdhH264()
          is declared.

          embdevE Offline
          embdevE Offline
          embdev
          wrote on last edited by embdev
          #12

          @mrjj I see. Well, because I've a main.c source file from vendor as sample program, which I've also added into Qt projects. And i'd like to link pushbutton I've created in mainwindow.mpp source file to link to my vendor sample source file function [i.e. SAMPLE_VDEC_VdhH264(); ], Hence there's no header file for the high-level function, as the high-level function is defined in the sample source file.

          Does it mean I've to create a separate header file to include the high-level functions in the sample source file, so that I can add the header file into mainwindow.mpp, containing the high-level function defined in my sample source file, and that I can then just call the functions accordingly?

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

            Hi
            I would make a new .h file for it as not to be messy.
            This file would list the functions from main.c

            However, if the main.cpp is included in the project, you can use without .h file like this

            void/int SAMPLE_VDEC_VdhH264(); //// forward declare it

            void MainWindow::on_pushButton_clicked()
            {
            SAMPLE_VDEC_VdhH264(); // call it
            }

            embdevE 1 Reply Last reply
            0
            • mrjjM mrjj

              Hi
              I would make a new .h file for it as not to be messy.
              This file would list the functions from main.c

              However, if the main.cpp is included in the project, you can use without .h file like this

              void/int SAMPLE_VDEC_VdhH264(); //// forward declare it

              void MainWindow::on_pushButton_clicked()
              {
              SAMPLE_VDEC_VdhH264(); // call it
              }

              embdevE Offline
              embdevE Offline
              embdev
              wrote on last edited by
              #14

              @mrjj I've included the headers from my sample source file in main.mpp as well, with the SAMPLE_VDEC_VdhH264 function declaration.

              In mainwindow.cpp

              #include "mainwindow.h"
              #include <QApplication>

              #include <stdio.h>
              #include <stdlib.h>
              #include <string.h>
              #include <sys/types.h>
              #include <sys/stat.h>
              #include <sys/ioctl.h>
              #include <sys/poll.h>
              #include <sys/time.h>
              #include <fcntl.h>
              #include <errno.h>
              #include <pthread.h>
              #include <math.h>
              #include <unistd.h>
              #include <signal.h>
              #include "sample_comm.h"

              int main(int argc, char *argv[])
              {
              QApplication a(argc, argv);
              MainWindow w;
              w.show();

              int SAMPLE_VDEC_VdhH264();
              
              return a.exec();
              

              }

              In mainwindow.cpp, invoke the function SAMPLE_VDEC_VdhH264

              #include "mainwindow.h"
              #include "ui_mainwindow.h"

              MainWindow::MainWindow(QWidget *parent) :
              QMainWindow(parent),
              ui(new Ui::MainWindow)
              {
              ui->setupUi(this);
              }

              MainWindow::~MainWindow()
              {
              delete ui;
              }

              void MainWindow::on_pushButton_clicked()
              {

              SAMPLE_VDEC_VdhH264();

              }


              I tried to build again but it says the same error though (i.e. in mainwindow.cpp, 'SAMPLE_VDEC_VdhH264 was not declared in this scope')

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

                int main(int argc, char *argv[])
                {
                QApplication a(argc, argv);
                MainWindow w;
                w.show();

                int SAMPLE_VDEC_VdhH264(); <<<< why here??? that is forward in main. not what i ment.

                return a.exec();
                }

                Did you make a .h file with ?
                int SAMPLE_VDEC_VdhH264();

                else
                i mean like

                int SAMPLE_VDEC_VdhH264();

                void MainWindow::on_pushButton_clicked()
                {

                SAMPLE_VDEC_VdhH264();

                }

                embdevE 1 Reply Last reply
                0
                • mrjjM mrjj

                  int main(int argc, char *argv[])
                  {
                  QApplication a(argc, argv);
                  MainWindow w;
                  w.show();

                  int SAMPLE_VDEC_VdhH264(); <<<< why here??? that is forward in main. not what i ment.

                  return a.exec();
                  }

                  Did you make a .h file with ?
                  int SAMPLE_VDEC_VdhH264();

                  else
                  i mean like

                  int SAMPLE_VDEC_VdhH264();

                  void MainWindow::on_pushButton_clicked()
                  {

                  SAMPLE_VDEC_VdhH264();

                  }

                  embdevE Offline
                  embdevE Offline
                  embdev
                  wrote on last edited by embdev
                  #16

                  @mrjj my apologies, I've read it otherwise. However, it seems that the compiler can't find my function definition. It's a separate source code which I've added into the project entitled "sample_vdec.c". The function definition in this source code is:

                  HI_S32 SAMPLE_VDEC_VdhH264(HI_VOID)
                  {
                  ....................
                  }

                  I've amended to the following:

                  in mainwindow.cpp:

                  #include "mainwindow.h"
                  #include "ui_mainwindow.h"
                  #include "hi3536mainfx.h"

                  MainWindow::MainWindow(QWidget *parent) :
                  QMainWindow(parent),
                  ui(new Ui::MainWindow)
                  {
                  ui->setupUi(this);
                  }

                  MainWindow::~MainWindow()
                  {
                  delete ui;
                  }

                  HI_U32 SAMPLE_VDEC_VdhH264();

                  void MainWindow::on_pushButton_clicked()
                  {

                  SAMPLE_VDEC_VdhH264();

                  }

                  in main.cpp

                  #include "mainwindow.h"
                  #include <QApplication>

                  int main(int argc, char *argv[])
                  {
                  QApplication a(argc, argv);
                  MainWindow w;
                  w.show();

                  return a.exec();
                  

                  }

                  in header

                  #ifndef HI3536MAINFX_H
                  #define HI3536MAINFX_H
                  #include <hi_type.h>
                  #include <hi_comm_vb.h>

                  typedef struct hiVDEC_USERPIC_S
                  {
                  HI_U32 u32PicWidth;
                  HI_U32 u32PicHeigth;
                  VB_POOL u32PoolId;
                  VB_BLK u32BlkHandle;
                  HI_U32 u32PhyAddr;
                  HI_VOID *pVirAddr;
                  }VDEC_USERPIC_S;

                  HI_U32 SAMPLE_VDEC_VdhH264();

                  #endif // HI3536MAINFX_H

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

                    since you have a
                    HI3536MAINFX_H
                    with
                    HI_U32 SAMPLE_VDEC_VdhH264();

                    you dont need it over
                    void MainWindow::on_pushButton_clicked()
                    also.

                    so compiles now?

                    embdevE 1 Reply Last reply
                    0
                    • mrjjM mrjj

                      since you have a
                      HI3536MAINFX_H
                      with
                      HI_U32 SAMPLE_VDEC_VdhH264();

                      you dont need it over
                      void MainWindow::on_pushButton_clicked()
                      also.

                      so compiles now?

                      embdevE Offline
                      embdevE Offline
                      embdev
                      wrote on last edited by embdev
                      #18

                      @mrjj discovered some error in datatype in my code but rectified it but still unable to compile. The error says undefined reference to SAMPLE_VDEC_VhdH264(); and ld returned 1 exit status.
                      When I highlighted VDEC_SAMPLEVhdH264(); in main.cpp and hit [F2] cursor recursively, it brings me to the sample source code where this function is defined but doesn't brings me to the header where I declared this function.

                      ** in main.cpp **

                      #include "mainwindow.h"
                      #include "ui_mainwindow.h"
                      #include "hi3536mainfx.h"
                      
                      MainWindow::MainWindow(QWidget *parent) :
                          QMainWindow(parent),
                          ui(new Ui::MainWindow)
                      {
                          ui->setupUi(this);
                      }
                      
                      MainWindow::~MainWindow()
                      {
                          delete ui;
                      }
                      
                      
                      void MainWindow::on_pushButton_clicked()
                      {
                      
                         SAMPLE_VDEC_VdhH264();
                      
                      }
                      

                      ** in sample source code where SAMPLE_VDEC_VhdH264() is defined: **

                      HI_S32 SAMPLE_VDEC_VdhH264(HI_VOID)
                      {
                          VB_CONF_S stVbConf, stModVbConf;
                          HI_S32 i, s32Ret = HI_SUCCESS;
                          VDEC_CHN_ATTR_S stVdecChnAttr[VDEC_MAX_CHN_NUM];
                          VdecThreadParam stVdecSend[VDEC_MAX_CHN_NUM];
                          VPSS_GRP_ATTR_S stVpssGrpAttr[VDEC_MAX_CHN_NUM];
                       ..... ..... .....
                      }
                      

                      ** in my header file **

                      #ifndef HI3536MAINFX_H
                      #define HI3536MAINFX_H
                      #include "hi_comm_vb.h"
                      #include "hi_type.h"
                      
                      typedef struct hiVDEC_USERPIC_S
                      {
                          HI_U32   u32PicWidth;
                          HI_U32   u32PicHeigth;
                          VB_POOL  u32PoolId;
                          VB_BLK   u32BlkHandle;
                          HI_U32   u32PhyAddr;
                          HI_VOID  *pVirAddr;
                      }VDEC_USERPIC_S;
                      
                      HI_S32 SAMPLE_VDEC_VdhH264(HI_VOID);
                      
                      #endif // HI3536MAINFX_H
                      
                      jsulmJ 1 Reply Last reply
                      0
                      • embdevE embdev

                        @mrjj discovered some error in datatype in my code but rectified it but still unable to compile. The error says undefined reference to SAMPLE_VDEC_VhdH264(); and ld returned 1 exit status.
                        When I highlighted VDEC_SAMPLEVhdH264(); in main.cpp and hit [F2] cursor recursively, it brings me to the sample source code where this function is defined but doesn't brings me to the header where I declared this function.

                        ** in main.cpp **

                        #include "mainwindow.h"
                        #include "ui_mainwindow.h"
                        #include "hi3536mainfx.h"
                        
                        MainWindow::MainWindow(QWidget *parent) :
                            QMainWindow(parent),
                            ui(new Ui::MainWindow)
                        {
                            ui->setupUi(this);
                        }
                        
                        MainWindow::~MainWindow()
                        {
                            delete ui;
                        }
                        
                        
                        void MainWindow::on_pushButton_clicked()
                        {
                        
                           SAMPLE_VDEC_VdhH264();
                        
                        }
                        

                        ** in sample source code where SAMPLE_VDEC_VhdH264() is defined: **

                        HI_S32 SAMPLE_VDEC_VdhH264(HI_VOID)
                        {
                            VB_CONF_S stVbConf, stModVbConf;
                            HI_S32 i, s32Ret = HI_SUCCESS;
                            VDEC_CHN_ATTR_S stVdecChnAttr[VDEC_MAX_CHN_NUM];
                            VdecThreadParam stVdecSend[VDEC_MAX_CHN_NUM];
                            VPSS_GRP_ATTR_S stVpssGrpAttr[VDEC_MAX_CHN_NUM];
                         ..... ..... .....
                        }
                        

                        ** in my header file **

                        #ifndef HI3536MAINFX_H
                        #define HI3536MAINFX_H
                        #include "hi_comm_vb.h"
                        #include "hi_type.h"
                        
                        typedef struct hiVDEC_USERPIC_S
                        {
                            HI_U32   u32PicWidth;
                            HI_U32   u32PicHeigth;
                            VB_POOL  u32PoolId;
                            VB_BLK   u32BlkHandle;
                            HI_U32   u32PhyAddr;
                            HI_VOID  *pVirAddr;
                        }VDEC_USERPIC_S;
                        
                        HI_S32 SAMPLE_VDEC_VdhH264(HI_VOID);
                        
                        #endif // HI3536MAINFX_H
                        
                        jsulmJ Offline
                        jsulmJ Offline
                        jsulm
                        Lifetime Qt Champion
                        wrote on last edited by
                        #19

                        @embdev said in How do i integrate my embedded C source codes (for my embedded linux board) with Qt GUI together?:

                        in sample source code where SAMPLE_VDEC_VhdH264() is defined:

                        Is the source file containing SAMPLE_VDEC_VhdH264() part of your project and is it built?

                        https://forum.qt.io/topic/113070/qt-code-of-conduct

                        embdevE 1 Reply Last reply
                        0
                        • jsulmJ jsulm

                          @embdev said in How do i integrate my embedded C source codes (for my embedded linux board) with Qt GUI together?:

                          in sample source code where SAMPLE_VDEC_VhdH264() is defined:

                          Is the source file containing SAMPLE_VDEC_VhdH264() part of your project and is it built?

                          embdevE Offline
                          embdevE Offline
                          embdev
                          wrote on last edited by
                          #20

                          @jsulm yes it is, the source file containing the function definition SAMPLE_VDEC_VhdH264() is added physically into the project file.

                          jsulmJ 1 Reply Last reply
                          0
                          • embdevE embdev

                            @jsulm yes it is, the source file containing the function definition SAMPLE_VDEC_VhdH264() is added physically into the project file.

                            jsulmJ Offline
                            jsulmJ Offline
                            jsulm
                            Lifetime Qt Champion
                            wrote on last edited by jsulm
                            #21

                            @embdev You should check the complete "Compile Output" to see whether that file was really built and linked to your executable.
                            Don't forget that you should always execute qmake again (and do a rebuild) if you change the .pro file!

                            https://forum.qt.io/topic/113070/qt-code-of-conduct

                            embdevE 1 Reply Last reply
                            0
                            • jsulmJ jsulm

                              @embdev You should check the complete "Compile Output" to see whether that file was really built and linked to your executable.
                              Don't forget that you should always execute qmake again (and do a rebuild) if you change the .pro file!

                              embdevE Offline
                              embdevE Offline
                              embdev
                              wrote on last edited by
                              #22

                              @jsulm I did a clean, followed by build again in Qt Creator IDE environment but still receiving the error:
                              In the .pro file, my source file containing the SAMPLE_VDEC_VhdH264() is also included under SOURCES +=

                              This is an output from the compile tab:

                              5:39:36: Running steps for project vdec_test...
                              15:39:36: Configuration unchanged, skipping qmake step.
                              15:39:36: Starting: "/usr/bin/make" 
                              arm-hisiv400-linux-g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I../../v1_QtEmbedded-4.8.6/mkspecs/qws/linux-hisiv400-arm-g++ -I../vdec_test -I../../v1_QtEmbedded-4.8.6/include/QtCore -I../../v1_QtEmbedded-4.8.6/include/QtNetwork -I../../v1_QtEmbedded-4.8.6/include/QtGui -I../../v1_QtEmbedded-4.8.6/include -I../../mpp_single/sample/common -I../../mpp_single/include -I../../mpp_single/extdrv/tlv320aic31 -I../../v1_QtEmbedded-4.8.6/examples/multimedia/videographicsitem -I../../mpp_single/lib -I../../mpp_single/include -I../../mpp_single/include -I../../mpp_single/include -I../../mpp_single/include -I../../mpp_single/include -I../../mpp_single/include -I. -I. -I../vdec_test -I. -o mainwindow.o ../vdec_test/mainwindow.cpp
                              arm-hisiv400-linux-g++ -Wl,-O1 -Wl,-rpath,/home/aa/Hi3536_SDK_V2.0.4.0/v1_QtEmbedded-4.8.6/lib -o vdec_test main.o mainwindow.o sample_comm_audio.o sample_comm_ivs.o sample_comm_sys.o sample_comm_vda.o sample_comm_vdec.o sample_comm_venc.o sample_comm_vi.o sample_comm_vo.o sample_comm_vpss.o sample_vdec.o moc_mainwindow.o    -L/home/aa/Hi3536_SDK_V2.0.4.0/v1_QtEmbedded-4.8.6/lib -L/home/aa/Hi3536_SDK_V2.0.4.0/Working\ folder/vdec_test/../../mpp_single/lib/ -ldnvqe -lhdmi -lmpi -ljpeg -lupvqe -lVoiceEngine -lQtGui -L/home/aa/Hi3536_SDK_V2.0.4.0/v1_QtEmbedded-4.8.6/lib -lQtNetwork -lQtCore -lm -ldl -lrt -lpthread 
                              mainwindow.o: In function `MainWindow::on_pushButton_clicked()':
                              mainwindow.cpp:(.text+0xbc): undefined reference to `SAMPLE_VDEC_VdhH264()'
                              mainwindow.o: In function `MainWindow::on_pushButton_2_clicked()':
                              mainwindow.cpp:(.text+0xc0): undefined reference to `SAMPLE_VDEC_VdhH265()'
                              collect2: error: ld returned 1 exit status
                              Makefile:125: recipe for target 'vdec_test' failed
                              make: *** [vdec_test] Error 1
                              15:39:37: The process "/usr/bin/make" exited with code 2.
                              Error while building/deploying project vdec_test (kit: HI3536 Qt4.8)
                              When executing step "Make"
                              15:39:37: Elapsed time: 00:01.
                              
                              jsulmJ 1 Reply Last reply
                              0
                              • embdevE embdev

                                @jsulm I did a clean, followed by build again in Qt Creator IDE environment but still receiving the error:
                                In the .pro file, my source file containing the SAMPLE_VDEC_VhdH264() is also included under SOURCES +=

                                This is an output from the compile tab:

                                5:39:36: Running steps for project vdec_test...
                                15:39:36: Configuration unchanged, skipping qmake step.
                                15:39:36: Starting: "/usr/bin/make" 
                                arm-hisiv400-linux-g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -I../../v1_QtEmbedded-4.8.6/mkspecs/qws/linux-hisiv400-arm-g++ -I../vdec_test -I../../v1_QtEmbedded-4.8.6/include/QtCore -I../../v1_QtEmbedded-4.8.6/include/QtNetwork -I../../v1_QtEmbedded-4.8.6/include/QtGui -I../../v1_QtEmbedded-4.8.6/include -I../../mpp_single/sample/common -I../../mpp_single/include -I../../mpp_single/extdrv/tlv320aic31 -I../../v1_QtEmbedded-4.8.6/examples/multimedia/videographicsitem -I../../mpp_single/lib -I../../mpp_single/include -I../../mpp_single/include -I../../mpp_single/include -I../../mpp_single/include -I../../mpp_single/include -I../../mpp_single/include -I. -I. -I../vdec_test -I. -o mainwindow.o ../vdec_test/mainwindow.cpp
                                arm-hisiv400-linux-g++ -Wl,-O1 -Wl,-rpath,/home/aa/Hi3536_SDK_V2.0.4.0/v1_QtEmbedded-4.8.6/lib -o vdec_test main.o mainwindow.o sample_comm_audio.o sample_comm_ivs.o sample_comm_sys.o sample_comm_vda.o sample_comm_vdec.o sample_comm_venc.o sample_comm_vi.o sample_comm_vo.o sample_comm_vpss.o sample_vdec.o moc_mainwindow.o    -L/home/aa/Hi3536_SDK_V2.0.4.0/v1_QtEmbedded-4.8.6/lib -L/home/aa/Hi3536_SDK_V2.0.4.0/Working\ folder/vdec_test/../../mpp_single/lib/ -ldnvqe -lhdmi -lmpi -ljpeg -lupvqe -lVoiceEngine -lQtGui -L/home/aa/Hi3536_SDK_V2.0.4.0/v1_QtEmbedded-4.8.6/lib -lQtNetwork -lQtCore -lm -ldl -lrt -lpthread 
                                mainwindow.o: In function `MainWindow::on_pushButton_clicked()':
                                mainwindow.cpp:(.text+0xbc): undefined reference to `SAMPLE_VDEC_VdhH264()'
                                mainwindow.o: In function `MainWindow::on_pushButton_2_clicked()':
                                mainwindow.cpp:(.text+0xc0): undefined reference to `SAMPLE_VDEC_VdhH265()'
                                collect2: error: ld returned 1 exit status
                                Makefile:125: recipe for target 'vdec_test' failed
                                make: *** [vdec_test] Error 1
                                15:39:37: The process "/usr/bin/make" exited with code 2.
                                Error while building/deploying project vdec_test (kit: HI3536 Qt4.8)
                                When executing step "Make"
                                15:39:37: Elapsed time: 00:01.
                                
                                jsulmJ Offline
                                jsulmJ Offline
                                jsulm
                                Lifetime Qt Champion
                                wrote on last edited by
                                #23

                                @embdev To me it doesn't look like a complete rebuild as in the second compiler call object files, which were not compiled before, are already linked:

                                arm-hisiv400-linux-g++ -Wl,-O1 -Wl,-rpath,/home/aa/Hi3536_SDK_V2.0.4.0/v1_QtEmbedded-4.8.6/lib -o vdec_test main.o mainwindow.o sample_comm_audio.o sample_comm_ivs.o sample_comm_sys.o sample_comm_vda.o sample_comm_vdec.o sample_comm_venc.o sample_comm_vi.o sample_comm_vo.o sample_comm_vpss.o sample_vdec.o moc_mainwindow.o    -L/home/aa/Hi3536_SDK_V2.0.4.0/v1_QtEmbedded-4.8.6/lib -L/home/aa/Hi3536_SDK_V2.0.4.0/Working\ folder/vdec_test/../../mpp_single/lib/ -ldnvqe -lhdmi -lmpi -ljpeg -lupvqe -lVoiceEngine -lQtGui -L/home/aa/Hi3536_SDK_V2.0.4.0/v1_QtEmbedded-4.8.6/lib -lQtNetwork -lQtCore -lm -ldl -lrt -lpthread
                                

                                Please do a rebuild.
                                In which file is SAMPLE_VDEC_VhdH264() defined?

                                https://forum.qt.io/topic/113070/qt-code-of-conduct

                                embdevE 1 Reply Last reply
                                0
                                • jsulmJ jsulm

                                  @embdev To me it doesn't look like a complete rebuild as in the second compiler call object files, which were not compiled before, are already linked:

                                  arm-hisiv400-linux-g++ -Wl,-O1 -Wl,-rpath,/home/aa/Hi3536_SDK_V2.0.4.0/v1_QtEmbedded-4.8.6/lib -o vdec_test main.o mainwindow.o sample_comm_audio.o sample_comm_ivs.o sample_comm_sys.o sample_comm_vda.o sample_comm_vdec.o sample_comm_venc.o sample_comm_vi.o sample_comm_vo.o sample_comm_vpss.o sample_vdec.o moc_mainwindow.o    -L/home/aa/Hi3536_SDK_V2.0.4.0/v1_QtEmbedded-4.8.6/lib -L/home/aa/Hi3536_SDK_V2.0.4.0/Working\ folder/vdec_test/../../mpp_single/lib/ -ldnvqe -lhdmi -lmpi -ljpeg -lupvqe -lVoiceEngine -lQtGui -L/home/aa/Hi3536_SDK_V2.0.4.0/v1_QtEmbedded-4.8.6/lib -lQtNetwork -lQtCore -lm -ldl -lrt -lpthread
                                  

                                  Please do a rebuild.
                                  In which file is SAMPLE_VDEC_VhdH264() defined?

                                  embdevE Offline
                                  embdevE Offline
                                  embdev
                                  wrote on last edited by embdev
                                  #24

                                  @jsulm I've deleted the object files away in my build-release folder. I think could be due to datatype declaration of my function, when it's invoked as HI_32 SAMPLE_VDEC_VdhH264(); in the main.cpp, then the project can be compiled, i.e.:

                                  ** in main.cpp **

                                  #include "mainwindow.h"
                                  #include "ui_mainwindow.h"
                                  #include "hi3536mainfx.h"
                                  
                                  MainWindow::MainWindow(QWidget *parent) :
                                      QMainWindow(parent),
                                      ui(new Ui::MainWindow)
                                  {
                                      ui->setupUi(this);
                                  }
                                  
                                  MainWindow::~MainWindow()
                                  {
                                      delete ui;
                                  }
                                  
                                  
                                  void MainWindow::on_pushButton_clicked()
                                  {
                                  
                                    HI_S32 SAMPLE_VDEC_VdhH264();
                                  
                                  }
                                  jsulmJ 1 Reply Last reply
                                  0
                                  • embdevE embdev

                                    @jsulm I've deleted the object files away in my build-release folder. I think could be due to datatype declaration of my function, when it's invoked as HI_32 SAMPLE_VDEC_VdhH264(); in the main.cpp, then the project can be compiled, i.e.:

                                    ** in main.cpp **

                                    #include "mainwindow.h"
                                    #include "ui_mainwindow.h"
                                    #include "hi3536mainfx.h"
                                    
                                    MainWindow::MainWindow(QWidget *parent) :
                                        QMainWindow(parent),
                                        ui(new Ui::MainWindow)
                                    {
                                        ui->setupUi(this);
                                    }
                                    
                                    MainWindow::~MainWindow()
                                    {
                                        delete ui;
                                    }
                                    
                                    
                                    void MainWindow::on_pushButton_clicked()
                                    {
                                    
                                      HI_S32 SAMPLE_VDEC_VdhH264();
                                    
                                    }
                                    jsulmJ Offline
                                    jsulmJ Offline
                                    jsulm
                                    Lifetime Qt Champion
                                    wrote on last edited by
                                    #25

                                    @embdev Now you are declaring a function with same name, you are not calling it.
                                    Functions are not called like this in C/C++.
                                    You should really check your project configuration and sources.

                                    https://forum.qt.io/topic/113070/qt-code-of-conduct

                                    embdevE 1 Reply Last reply
                                    0
                                    • jsulmJ jsulm

                                      @embdev Now you are declaring a function with same name, you are not calling it.
                                      Functions are not called like this in C/C++.
                                      You should really check your project configuration and sources.

                                      embdevE Offline
                                      embdevE Offline
                                      embdev
                                      wrote on last edited by
                                      #26

                                      @jsulm I see, project configurations meaning the .pro file?

                                      jsulmJ 1 Reply Last reply
                                      0
                                      • embdevE embdev

                                        @jsulm I see, project configurations meaning the .pro file?

                                        jsulmJ Offline
                                        jsulmJ Offline
                                        jsulm
                                        Lifetime Qt Champion
                                        wrote on last edited by
                                        #27

                                        @embdev yes

                                        https://forum.qt.io/topic/113070/qt-code-of-conduct

                                        mrjjM 1 Reply Last reply
                                        1
                                        • jsulmJ jsulm

                                          @embdev yes

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

                                          @jsulm
                                          Hi
                                          I wonder if
                                          extern "c" {
                                          #include "hi3536mainfx.h"
                                          }

                                          is needed?

                                          jsulmJ 1 Reply Last reply
                                          1

                                          • Login

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