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. Snap7 Undefined Reference to TS7Client::TS7Client()
QtWS25 Last Chance

Snap7 Undefined Reference to TS7Client::TS7Client()

Scheduled Pinned Locked Moved Solved General and Desktop
24 Posts 4 Posters 5.9k Views
  • 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.
  • Z Offline
    Z Offline
    ZekDe
    wrote on last edited by ZekDe
    #11

    This is my .pro file

    QT += core gui

    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

    TARGET = untitled1
    TEMPLATE = app

    DEFINES += QT_DEPRECATED_WARNINGS

    SOURCES +=
    main.cpp
    mainwindow.cpp
    snap7.cpp

    HEADERS +=
    mainwindow.h \

    FORMS +=
    mainwindow.ui

    win32: LIBS += -L$$PWD/./ -lsnap7

    INCLUDEPATH += $$PWD/.
    DEPENDPATH += $$PWD/.

    1 Reply Last reply
    0
    • Z Offline
      Z Offline
      ZekDe
      wrote on last edited by
      #12

      into .h

      #ifndef MAINWINDOW_H
      #define MAINWINDOW_H
      
      #include <QMainWindow>
      //#include "snap7.h"
      class TS7Client;
      
      namespace Ui {
      class MainWindow;
      }
      
      class MainWindow : public QMainWindow
      {
          Q_OBJECT
      
      public:
          explicit MainWindow(QWidget *parent = 0);
      
          void CliCompletion(void *usrPtr, int opCode, int opResult);
          void SysSleep(uint32_t Delay_ms);
          bool Check(int Result, const char * function);
          void MultiRead();
          void ListBlocks();
          void OrderCode();
          void CpuInfo();
          void CpInfo();
          void UnitStatus();
          void UploadDB0();
          void AsCBUploadDB0();
          void AsEWUploadDB0();
          void AsPOUploadDB0();
          void ReadSzl_0011_0000();
          bool CliConnect();
          void CliDisconnect();
          void PerformTests();
          void Summary();
          //void hexdump(void *mem, unsigned int len);
      
          ~MainWindow();
      
      private:
          Ui::MainWindow *ui;
      
               TS7Client *Client;
      
               uint8_t Buffer[65536]; // 64 K buffer
               int SampleDBNum = 1000;
      
               char *Address = (char*)"192.168.0.1" ;     // PLC IP Address
               int Rack=0,Slot=1; // Default Rack and Slot
      
               int ok = 0; // Number of test pass
               int ko = 0; // Number of test failure
      
               bool JobDone=false;
               int JobResult=0;
      };
      
      #endif // MAINWINDOW_H
      
      

      into .cpp

      #include "mainwindow.h"
      #include "ui_mainwindow.h"
      #include <stdio.h>
      #include <stdlib.h>
      #include "QThread"
      #include "QString"
      #include "snap7.h"
      
      MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent),ui(new Ui::MainWindow)
      {
          ui->setupUi(this);
      
       TS7Client *abc = new TS7Client();
      
      
      if (CliConnect())
         {
             PerformTests();
             CliDisconnect();
         }
      
         delete Client;
         Summary();
      }
      
      void MainWindow::CliCompletion(void *usrPtr, int opCode, int opResult)
      {
          JobResult=opResult;
          JobDone = true;
      }
      
      /**********************************************************************************************/
      // SysSleep (copied from snap_sysutils.cpp) multiplatform millisec sleep
      //------------------------------------------------------------------------------
      void MainWindow::SysSleep(longword Delay_ms)
      {
          QThread::msleep(Delay_ms);
      }
      
      bool MainWindow::Check(int Result, const char *function)
      {
          ui->textEdit->append("\n");
              ui->textEdit->append("+-----------------------------------------------------\n");
              ui->textEdit->append(function);
              ui->textEdit->append("+-----------------------------------------------------\n");
              if (Result==0) {
                  ui->textEdit->append("| Result         : OK\n");
                  ui->textEdit->append("| Execution time : " + QString::number(Client->ExecTime()));
                  ui->textEdit->append("+-----------------------------------------------------\n");
                  ok++;
              }
              else {
                  ui->textEdit->append("| ERROR !!! \n");
                  if (Result<0)
                      ui->textEdit->append("| Library Error (-1)\n");
                  else
                  ui->textEdit->append(tr("| %1").arg(CliErrorText(Result).c_str()));
                  ui->textEdit->append("+-----------------------------------------------------\n");
                  ko++;
              }
              return Result==0;
      }
      
      void MainWindow::MultiRead()
      {
          // Multiread buffers
              byte MB[16]; // 16 Merker bytes
              byte EB[16]; // 16 Digital Input bytes
              byte AB[16]; // 16 Digital Output bytes
              word TM[8];  // 8 timers
              word CT[8];  // 8 counters
      
              // Prepare struct
              TS7DataItem Items[5];
      
              // NOTE : *AMOUNT IS NOT SIZE* , it's the number of items
              // Merkers
              Items[0].Area     =S7AreaMK;
              Items[0].WordLen  =S7WLByte;
              Items[0].DBNumber =0;        // Don't need DB
              Items[0].Start    =0;        // Starting from 0
              Items[0].Amount   =16;       // 16 Items (bytes)
              Items[0].pdata    =&MB;
              // Digital Input bytes
              Items[1].Area     =S7AreaPE;
              Items[1].WordLen  =S7WLByte;
              Items[1].DBNumber =0;        // Don't need DB
              Items[1].Start    =0;        // Starting from 0
              Items[1].Amount   =16;       // 16 Items (bytes)
              Items[1].pdata    =&EB;
              // Digital Output bytes
              Items[2].Area     =S7AreaPA;
              Items[2].WordLen  =S7WLByte;
              Items[2].DBNumber =0;        // Don't need DB
              Items[2].Start    =0;        // Starting from 0
              Items[2].Amount   =16;       // 16 Items (bytes)
              Items[2].pdata    =&AB;
              // Timers
              Items[3].Area     =S7AreaTM;
              Items[3].WordLen  =S7WLTimer;
              Items[3].DBNumber =0;        // Don't need DB
              Items[3].Start    =0;        // Starting from 0
              Items[3].Amount   =8;        // 8 Timers
              Items[3].pdata    =&TM;
              // Counters
              Items[4].Area     =S7AreaCT;
              Items[4].WordLen  =S7WLCounter;
              Items[4].DBNumber =0;        // Don't need DB
              Items[4].Start    =0;        // Starting from 0
              Items[4].Amount   =8;        // 8 Counters
              Items[4].pdata    =&CT;
      
              int res=Client->ReadMultiVars(&Items[0],5);
      
              if (Check(res,"Multiread Vars"))
              {
                 // Result of Client->ReadMultivars is the "global result" of
                 // the function, it's OK if something was exchanged.
      
                 // But we need to check single Var results.
                 // Let shall suppose that we ask for 5 vars, 4 of them are ok but
                 // the 5th is inexistent, we will have 4 results ok and 1 not ok.
      
                 ui->textEdit->append("Dump MB0..MB15 - Var Result : " + QString::number(Items[0].Result));
      //           if (Items[0].Result==0)
      //               hexdump(&MB,16);
                 ui->textEdit->append("Dump EB0..EB15 - Var Result : " + QString::number(Items[1].Result));
      //           if (Items[1].Result==0)
      //               hexdump(&EB,16);
                 ui->textEdit->append("Dump AB0..AB15 - Var Result : " + QString::number(Items[2].Result));
      //           if (Items[2].Result==0)
      //               hexdump(&AB,16);
                 ui->textEdit->append("Dump T0..T7 - Var Result : " + QString::number(Items[3].Result));
                 /*if (Items[3].Result==0)
                     hexdump(&TM,16); */        // 8 Timers -> 16 bytes
                 ui->textEdit->append("Dump Z0..Z7 - Var Result : " + QString::number(Items[4].Result));
      //           if (Items[4].Result==0)
      //               hexdump(&CT,16);         // 8 Counters -> 16 bytes
              }
      }
      
      void MainWindow::ListBlocks()
      {
          TS7BlocksList List;
              int res=Client->ListBlocks(&List);
              if (Check(res,"List Blocks in AG"))
              {
                  ui->textEdit->append("  OBCount  : "+ QString::number(List.OBCount));
                  ui->textEdit->append("  FBCount  : "+ QString::number(List.FBCount));
                  ui->textEdit->append("  FCCount  : "+ QString::number(List.FCCount));
                  ui->textEdit->append("  SFBCount : "+ QString::number(List.SFBCount));
                  ui->textEdit->append("  SFCCount : "+ QString::number(List.SFCCount));
                  ui->textEdit->append("  DBCount  : "+ QString::number(List.DBCount));
                  ui->textEdit->append("  SDBCount : "+ QString::number(List.SDBCount));
              }
      }
      
      void MainWindow::OrderCode()
      {
          TS7OrderCode Info;
               int res=Client->GetOrderCode(&Info);
               if (Check(res,"Catalog"))
               {
      
                    ui->textEdit->append(tr("Order Code : %1").arg(Info.Code));
                    ui->textEdit->append(tr("Version : %1.%2.%3")
                     .arg(QString::number(Info.V1)).arg(QString::number(Info.V2)).QString::number(Info.V3));
               }
      }
      
      void MainWindow::CpuInfo()
      {
              TS7CpuInfo Info;
               int res=Client->GetCpuInfo(&Info);
               if (Check(res,"Unit Info"))
               {
                     ui->textEdit->append(tr("  Module Type Name : %1").arg(Info.ModuleTypeName));
                     ui->textEdit->append(tr("  Serial Number    : %1").arg(Info.SerialNumber));
                     ui->textEdit->append(tr("  AS Name          : %1").arg(Info.ASName));
                     ui->textEdit->append(tr("  Module Name      : %1").arg(Info.ModuleName));
               }
      }
      
      void MainWindow::CpInfo()
      {
          TS7CpInfo Info;
               int res=Client->GetCpInfo(&Info);
               if (Check(res,"Communication processor Info"))
               {
                    ui->textEdit->append("  Max PDU Length   : " + QString::number(Info.MaxPduLengt) + " bytes");
                    ui->textEdit->append("  Max Connections  : " + QString::number(Info.MaxConnections));
                    ui->textEdit->append("  Max MPI Rate     : " + QString::number(Info.MaxMpiRate) + " bps");
                    ui->textEdit->append("  Max Bus Rate     : " + QString::number(Info.MaxBusRate) + " bps");
               };
      }
      //------------------------------------------------------------------------------
      // PLC Status
      //------------------------------------------------------------------------------
      void MainWindow::UnitStatus()
      {
          int res=0;
               int Status=Client->PlcStatus();
               if (Check(res,"CPU Status"))
               {
                    switch (Status)
                    {
                        case S7CpuStatusRun : printf("  RUN\n"); break;
                        case S7CpuStatusStop: printf("  STOP\n"); break;
                        default             : printf("  UNKNOWN\n"); break;
                    }
               }
      }
      
      //------------------------------------------------------------------------------
      // Upload DB0 (surely exists in AG)
      //------------------------------------------------------------------------------
      
      void MainWindow::UploadDB0()
      {
               int Size = sizeof(Buffer); // Size is IN/OUT par
                                          // In input it tells the client the size available
                                          // In output it tells us how many bytes were uploaded.
               int res=Client->Upload(Block_SDB, 0, &Buffer, &Size);
               if (Check(res,"Block Upload (SDB 0)"))
               {
                    ui->textEdit_2->append(tr("Dump (%1 bytes)").arg(Size));
                    //hexdump(&Buffer,Size);
               }
      }
      //------------------------------------------------------------------------------
      // Async Upload DB0 (using callback as completion trigger)
      //------------------------------------------------------------------------------
      void MainWindow::AsCBUploadDB0()
      {
          int Size = sizeof(Buffer); // Size is IN/OUT par
                                          // In input it tells the client the size available
                                          // In output it tells us how many bytes were uploaded.
               JobDone=false;
               int res=Client->AsUpload(Block_SDB, 0, &Buffer, &Size);
      
               if (res==0)
               {
                   while (!JobDone)
                   {
                       SysSleep(100);
                   }
                   res=JobResult;
               }
      
               if (Check(res,"Async (callback) Block Upload (SDB 0)"))
               {
                     ui->textEdit_2->append(tr("Dump (%1 bytes) : ").arg(QString::number(Size)));
                   // hexdump(&Buffer,Size);
               }
      }
      
      void MainWindow::AsEWUploadDB0()
      {
          int Size = sizeof(Buffer); // Size is IN/OUT par
                                          // In input it tells the client the size available
                                          // In output it tells us how many bytes were uploaded.
               JobDone=false;
               int res=Client->AsUpload(Block_SDB, 0, &Buffer, &Size);
      
               if (res==0)
               {
                   res=Client->WaitAsCompletion(3000);
               }
      
               if (Check(res,"Async (Wait event) Block Upload (SDB 0)"))
               {
                     ui->textEdit_2->append(tr("Dump (%1 bytes) : ").arg(QString::number(Size)));
                   // hexdump(&Buffer,Size);
               }
      }
      //------------------------------------------------------------------------------
      // Async Upload DB0 (using polling as completion trigger)
      //------------------------------------------------------------------------------
      void MainWindow::AsPOUploadDB0()
      {
          int Size = sizeof(Buffer); // Size is IN/OUT par
                                          // In input it tells the client the size available
                                          // In output it tells us how many bytes were uploaded.
               JobDone=false;
               int res=Client->AsUpload(Block_SDB, 0, &Buffer, &Size);
      
               if (res==0)
               {
                   while (!Client->CheckAsCompletion(&res))
                   {
                       SysSleep(100);
                   };
               }
      
               if (Check(res,"Async (polling) Block Upload (SDB 0)"))
               {
                     ui->textEdit_2->append(tr("Dump (%1 bytes) : ").arg(Size));
                   // hexdump(&Buffer,Size);
               }
      }
      //------------------------------------------------------------------------------
      // Read a sample SZL Block
      //------------------------------------------------------------------------------
      void MainWindow::ReadSzl_0011_0000()
      {
               PS7SZL SZL = PS7SZL(&Buffer);  // use our buffer casted as TS7SZL
               int Size = sizeof(Buffer);
               // Block ID 0x0011 IDX 0x0000 normally exists in every CPU
               int res=Client->ReadSZL(0x0011, 0x0000, SZL, &Size);
               if (Check(res,"Read SZL - ID : 0x0011, IDX 0x0000"))
               {
                  ui->textEdit_2->append(tr("  LENTHDR : %1").arg(SZL->Header.LENTHDR));
                  ui->textEdit_2->append(tr("  N_DR    : %1").arg(SZL->Header.N_DR));
                  ui->textEdit_2->append(tr("Dump (%1 bytes) ").arg(Size));
                  //hexdump(&Buffer,Size);
               }
      }
      //------------------------------------------------------------------------------
      // Unit Connection
      //------------------------------------------------------------------------------
      bool MainWindow::CliConnect()
      {
          int res = Client->ConnectTo(Address,Rack,Slot);
              if (Check(res,"UNIT Connection")) {
                    ui->textEdit_2->append(tr("  Connected to   : %1 (Rack= %2, Slot= %3)").arg(Address).arg(Rack).arg(Slot));
                    ui->textEdit_2->append(tr("  PDU Requested  : %1 bytes").arg(Client->PDURequested()));
                    ui->textEdit_2->append(tr("  PDU Negotiated : %1 bytes").arg(Client->PDULength()));
              };
              return res==0;
      }
      //------------------------------------------------------------------------------
      // Unit Disconnection
      //------------------------------------------------------------------------------
      void MainWindow::CliDisconnect()
      {
          Client->Disconnect();
      }
      //------------------------------------------------------------------------------
      // Perform readonly tests, no cpu status modification
      //------------------------------------------------------------------------------
      void MainWindow::PerformTests()
      {
               OrderCode();
               CpuInfo();
               CpInfo();
               UnitStatus();
               ReadSzl_0011_0000();
               UploadDB0();
               AsCBUploadDB0();
               AsEWUploadDB0();
               AsPOUploadDB0();
               MultiRead();
      }
      //------------------------------------------------------------------------------
      // Tests Summary
      //------------------------------------------------------------------------------
      void MainWindow::Summary()
      {
          ui->textEdit_2->append("+-----------------------------------------------------\n");
          ui->textEdit_2->append("| Test Summary ");
          ui->textEdit_2->append("+-----------------------------------------------------\n");
          ui->textEdit_2->append(tr("| Performed : %1").arg(ok+ko));
          ui->textEdit_2->append(tr("| Passed    : %1").arg(ok));
          ui->textEdit_2->append(tr("| Failed    : %1").arg(ko));
      }
      
      /**********************************************************************************************/
      #ifndef HEXDUMP_COLS
      #define HEXDUMP_COLS 16
      #endif
      //void MainWindow::hexdump(void *mem, unsigned int len)
      //{
      //        unsigned int i, j;
      
      //        for(i = 0; i < len + ((len % HEXDUMP_COLS) ? (HEXDUMP_COLS - len % HEXDUMP_COLS) : 0); i++)
      //        {
      //                /* print offset */
      //                if(i % HEXDUMP_COLS == 0)
      //                {
      //                        u(ui->textEdit,"0x%04x: ", i);
      //                        ui->textEdit_2->setText();
      //                }
      
      //                /* print hex data */
      //                if(i < len)
      //                {
      //                        printf("%02x ", 0xFF & ((char*)mem)[i]);
      //                }
      //                else /* end of block, just aligning for ASCII dump */
      //                {
      //                        printf("   ");
      //                }
      
      //                /* print ASCII dump */
      //                if(i % HEXDUMP_COLS == (HEXDUMP_COLS - 1))
      //                {
      //                        for(j = i - (HEXDUMP_COLS - 1); j <= i; j++)
      //                        {
      //                                if(j >= len) /* end of block, not really printing */
      //                                {
      //                                        putchar(' ');
      //                                }
      //                                else if(isprint((((char*)mem)[j] & 0x7F))) /* printable char */
      //                                {
      //                                        putchar(0xFF & ((char*)mem)[j]);
      //                                }
      //                                else /* other char */
      //                                {
      //                                        putchar('.');
      //                                }
      //                        }
      //                        putchar('\n');
      //                }
      //        }
      //}
      
      MainWindow::~MainWindow()
      {
          delete ui;
      }
      
      
      1 Reply Last reply
      0
      • SGaistS Offline
        SGaistS Offline
        SGaist
        Lifetime Qt Champion
        wrote on last edited by
        #13

        Which option are you currently using ?

        Embedding the library or linking to it ?

        If the later, did you compile it with the same compiler used for Qt ?

        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
        1
        • Z Offline
          Z Offline
          ZekDe
          wrote on last edited by
          #14

          I didnt understan excatly what you mean.I wanna use link the .lib so that I will use just 3 files .h,.cpp,.lib but I suppose I have to use .dll as well in same file with .lib adding exectuble folder(I doesnt work,like you see Qt create a debug file and .exe after the compile )

          1 Reply Last reply
          0
          • Z Offline
            Z Offline
            ZekDe
            wrote on last edited by
            #15

            Okay okay, when I create the this object in mainwindow.h ,this is being creating but I couldn't reach it from in mainwinbdow.cpp

            into mainwindow.h

            #ifndef MAINWINDOW_H
            #define MAINWINDOW_H
            
            #include <QMainWindow>
            #include "snap7.h"
            
            
            namespace Ui {
            class MainWindow;
            }
            
            class MainWindow : public QMainWindow
            {
                Q_OBJECT
            
            public:
                explicit MainWindow(QWidget *parent = 0);
            
                void CliCompletion(void *usrPtr, int opCode, int opResult);
                void SysSleep(uint32_t Delay_ms);
                bool Check(int Result, const char * function);
                void MultiRead();
                void ListBlocks();
                void OrderCode();
                void CpuInfo();
                void CpInfo();
                void UnitStatus();
                void UploadDB0();
                void AsCBUploadDB0();
                void AsEWUploadDB0();
                void AsPOUploadDB0();
                void ReadSzl_0011_0000();
                bool CliConnect();
                void CliDisconnect();
                void PerformTests();
                void Summary();
                //void hexdump(void *mem, unsigned int len);
            
                ~MainWindow();
            
            private:
                Ui::MainWindow *ui;
            
                     TS7Client *Client = new TS7Client();
            
                     uint8_t Buffer[65536]; // 64 K buffer
                     int SampleDBNum = 1000;
            
                     char *Address = (char*)"192.168.0.1" ;     // PLC IP Address
                     int Rack=0,Slot=1; // Default Rack and Slot
            
                     int ok = 0; // Number of test pass
                     int ko = 0; // Number of test failure
            
                     bool JobDone=false;
                     int JobResult=0;
            };
            
            #endif // MAINWINDOW_H
            
            

            into .cpp```
            0_1516196444568_efe5b0dc-d8d7-481d-a4c8-9b9eb9a7aad1-image.png //your code here

            1 Reply Last reply
            0
            • Z Offline
              Z Offline
              ZekDe
              wrote on last edited by
              #16

              I am missing something ,I couldnt get to used C++ yet

              1 Reply Last reply
              0
              • Z Offline
                Z Offline
                ZekDe
                wrote on last edited by
                #17

                ![alt text](0_1516196914626_2e46ef7a-b7c6-47f9-aebd-137eced44bbc-image.png image url)

                0_1516196938513_0c459213-da27-4662-ad9b-38e038f66077-image.png

                1 Reply Last reply
                0
                • Z Offline
                  Z Offline
                  ZekDe
                  wrote on last edited by
                  #18

                  When I add the source files ,it worked properly.Also this lines is being added,I dont know why

                  win32:LIBS += C:\Qt\Tools\mingw530_32\i686-w64-mingw32\lib\libws2_32.a
                  win32:LIBS += C:\Qt\Tools\mingw530_32\i686-w64-mingw32\lib\libwinmm.a

                  mrjjM 1 Reply Last reply
                  0
                  • Z ZekDe

                    When I add the source files ,it worked properly.Also this lines is being added,I dont know why

                    win32:LIBS += C:\Qt\Tools\mingw530_32\i686-w64-mingw32\lib\libws2_32.a
                    win32:LIBS += C:\Qt\Tools\mingw530_32\i686-w64-mingw32\lib\libwinmm.a

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

                    @ZekDe
                    its runtime libs from the compiler.

                    1 Reply Last reply
                    0
                    • Z Offline
                      Z Offline
                      ZekDe
                      wrote on last edited by
                      #20

                      well, how can I reliase it if I use any libs

                      mrjjM 1 Reply Last reply
                      0
                      • Z ZekDe

                        well, how can I reliase it if I use any libs

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

                        @ZekDe
                        In what way realize ?
                        It surely uses its runtime files.

                        1 Reply Last reply
                        0
                        • Z Offline
                          Z Offline
                          ZekDe
                          wrote on last edited by
                          #22

                          when I create a new project there are no these lines.A guy give me a sample project and these lines were in it.
                          If he dont give me a project .How will I add these line?

                          1 Reply Last reply
                          0
                          • Z Offline
                            Z Offline
                            ZekDe
                            wrote on last edited by
                            #23

                            Hmm I have looked in Makefile and I encounter this line,
                            LIBS = -L"$(MINGW)/lib" -static-libgcc --no-export-all-symbols --add-stdcall-alias $(MINGW)/lib/libws2_32.a $(MINGW)/lib/libwinmm.a $(MINGW)/lib/gcc/mingw32/$(MINREL)/libstdc++.a
                            INCS = -I"$(MINGW)/include" -I"../../../src/sys" -I"../../../src/core" -I"../../../src/lib"

                            Previously I realised , there is no files in mingw32 5.3.0 but libstdc++ is available
                            Also existing a this writing in webside, "Libstdc++ are statically linked, so you don’t need to distribute them with your software" I suppose it means that.
                            I do not have enough knowledge.

                            mrjjM 1 Reply Last reply
                            0
                            • Z ZekDe

                              Hmm I have looked in Makefile and I encounter this line,
                              LIBS = -L"$(MINGW)/lib" -static-libgcc --no-export-all-symbols --add-stdcall-alias $(MINGW)/lib/libws2_32.a $(MINGW)/lib/libwinmm.a $(MINGW)/lib/gcc/mingw32/$(MINREL)/libstdc++.a
                              INCS = -I"$(MINGW)/include" -I"../../../src/sys" -I"../../../src/core" -I"../../../src/lib"

                              Previously I realised , there is no files in mingw32 5.3.0 but libstdc++ is available
                              Also existing a this writing in webside, "Libstdc++ are statically linked, so you don’t need to distribute them with your software" I suppose it means that.
                              I do not have enough knowledge.

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

                              Hi
                              Statically linked means it is put inside and hence requires no DLL to
                              be included with the app.

                              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