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.
  • SGaistS Offline
    SGaistS Offline
    SGaist
    Lifetime Qt Champion
    wrote on last edited by
    #9

    Hi,

    As @aha_1980 suggested: are you linking against the library providing that class ?

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

      Also I am using Mıngw32 also this is the project source webside .you can download and see ,little mb.

      https://sourceforge.net/projects/snap7/files/1.4.2/

      1 Reply Last reply
      0
      • 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