Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. 3rd Party Software
  4. Spdlog library can't open in the Qt.
Forum Updated to NodeBB v4.3 + New Features

Spdlog library can't open in the Qt.

Scheduled Pinned Locked Moved Solved 3rd Party Software
20 Posts 5 Posters 3.6k Views 3 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.
  • E Offline
    E Offline
    Enes Alp
    wrote on 24 Aug 2021, 10:39 last edited by
    #1

    I added spdlog.lib and fmt.lib to .pro file . And I also compiled the program but it's crashed.
    How can I solve the problem?

    13:34:08: Starting C:\Users\enesa\Desktop\projeler\build-GaziStation-Desktop_Qt_5_15_2_MSVC2019_64bit-Debug\debug\GaziStation.exe ...
    13:34:08: The program has unexpectedly finished.
    13:34:08: The process was ended forcefully.
    13:34:08: C:\Users\enesa\Desktop\projeler\build-GaziStation-Desktop_Qt_5_15_2_MSVC2019_64bit-Debug\debug\GaziStation.exe crashed.
    
    #-----------------------------------------------------------------------------------------
    # Make options
    #-----------------------------------------------------------------------------------------
    
    UI_DIR = uic
    MOC_DIR = moc
    RCC_DIR = qrc
    OBJECTS_DIR = obj
    
    CONFIG += c++11
    
    isEmpty(PREFIX) {
        PREFIX = /usr
    }
    
    TEMPLATE = app                                           # Project template
    QT += xml
    QT += sql
    QT += svg
    QT += core
    QT += quick
    QT += charts
    QT += widgets
    QT += serialport
    QT += printsupport
    QT += quickcontrols2
    
    ##- spdlog installed by default c:/dev/vcpkg
    SPDLOG_ROOT = c:/dev/vcpkg/installed/x64-windows
    exists($$SPDLOG_ROOT) {
        LIBS        += -L$$SPDLOG_ROOT/lib -lspdlog -lfmt
    
        INCLUDEPATH += $$SPDLOG_ROOT/include
        DEPENDPATH += $$SPDLOG_ROOT/include
    
        DESTDIR_WIN = $$replace(DESTDIR, "/", "\\")
        SPDLOG_ROOT_WIN = $$replace(SPDLOG_ROOT, "/", "\\")
    }
    
    # You can make your code fail to compile if it uses deprecated APIs.
    # In order to do so, uncomment the following line.
    #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
    
    INCLUDEPATH += src
    
    SOURCES += \
            main.cpp \
            src/comm/network.cpp \
            src/comm/packet.cpp \
            src/comm/serialport.cpp \
            src/controllers/mastercontroller.cpp
    
    RESOURCES += qml.qrc \
        assets.qrc \
        components.qrc
    
    # Additional import path used to resolve QML modules in Qt Creator's code model
    QML_IMPORT_PATH = $$PWD
    
    # Additional import path used to resolve QML modules just for Qt Quick Designer
    QML_DESIGNER_IMPORT_PATH =
    
    # Default rules for deployment.
    qnx: target.path = /tmp/$${TARGET}/bin
    else: unix:!android: target.path = /opt/$${TARGET}/bin
    !isEmpty(target.path): INSTALLS += target
    
    HEADERS += \
        src/comm/network.h \
        src/comm/packet.h \
        src/comm/serialport.h \
        src/controllers/navigationcontroller.h \
        src/controllers/mastercontroller.h
    
    !build_pass:message(GaziStation project dir: $${PWD})
    
    #include <QGuiApplication>
    #include <QQmlApplicationEngine>
    #include <QQmlContext>
    
    #include "spdlog/spdlog.h"
    
    int main(int argc, char *argv[]) {
    #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
      QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
    #endif
    
      QGuiApplication app(argc, argv);
    
      spdlog::info("....");
    
      QQmlApplicationEngine engine;
      engine.addImportPath("qrc:/");
      const QUrl url(QStringLiteral("qrc:/views/MasterView.qml"));
      QObject::connect(
          &engine, &QQmlApplicationEngine::objectCreated, &app,
          [url](QObject *obj, const QUrl &objUrl) {
            if (!obj && url == objUrl)
              QCoreApplication::exit(-1);
          },
          Qt::QueuedConnection);
      engine.load(url);
    
      return app.exec();
    }
    
    K 1 Reply Last reply 24 Aug 2021, 11:00
    0
    • E Enes Alp
      24 Aug 2021, 18:13

      @SGaist
      The problem is in the spdlog::info function line. When I delete this line, I don't get errors.

      P Offline
      P Offline
      Pablo J. Rogina
      wrote on 24 Aug 2021, 19:33 last edited by
      #14

      @Enes-Alp said in Spdlog library can't open in the Qt.:

      The problem is in the spdlog::info function line

      Have you tried the header-only approach?

      Upvote the answer(s) that helped you solve the issue
      Use "Topic Tools" button to mark your post as Solved
      Add screenshots via postimage.org
      Don't ask support requests via chat/PM. Please use the forum so others can benefit from the solution in the future

      1 Reply Last reply
      0
      • E Enes Alp
        24 Aug 2021, 10:39

        I added spdlog.lib and fmt.lib to .pro file . And I also compiled the program but it's crashed.
        How can I solve the problem?

        13:34:08: Starting C:\Users\enesa\Desktop\projeler\build-GaziStation-Desktop_Qt_5_15_2_MSVC2019_64bit-Debug\debug\GaziStation.exe ...
        13:34:08: The program has unexpectedly finished.
        13:34:08: The process was ended forcefully.
        13:34:08: C:\Users\enesa\Desktop\projeler\build-GaziStation-Desktop_Qt_5_15_2_MSVC2019_64bit-Debug\debug\GaziStation.exe crashed.
        
        #-----------------------------------------------------------------------------------------
        # Make options
        #-----------------------------------------------------------------------------------------
        
        UI_DIR = uic
        MOC_DIR = moc
        RCC_DIR = qrc
        OBJECTS_DIR = obj
        
        CONFIG += c++11
        
        isEmpty(PREFIX) {
            PREFIX = /usr
        }
        
        TEMPLATE = app                                           # Project template
        QT += xml
        QT += sql
        QT += svg
        QT += core
        QT += quick
        QT += charts
        QT += widgets
        QT += serialport
        QT += printsupport
        QT += quickcontrols2
        
        ##- spdlog installed by default c:/dev/vcpkg
        SPDLOG_ROOT = c:/dev/vcpkg/installed/x64-windows
        exists($$SPDLOG_ROOT) {
            LIBS        += -L$$SPDLOG_ROOT/lib -lspdlog -lfmt
        
            INCLUDEPATH += $$SPDLOG_ROOT/include
            DEPENDPATH += $$SPDLOG_ROOT/include
        
            DESTDIR_WIN = $$replace(DESTDIR, "/", "\\")
            SPDLOG_ROOT_WIN = $$replace(SPDLOG_ROOT, "/", "\\")
        }
        
        # You can make your code fail to compile if it uses deprecated APIs.
        # In order to do so, uncomment the following line.
        #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
        
        INCLUDEPATH += src
        
        SOURCES += \
                main.cpp \
                src/comm/network.cpp \
                src/comm/packet.cpp \
                src/comm/serialport.cpp \
                src/controllers/mastercontroller.cpp
        
        RESOURCES += qml.qrc \
            assets.qrc \
            components.qrc
        
        # Additional import path used to resolve QML modules in Qt Creator's code model
        QML_IMPORT_PATH = $$PWD
        
        # Additional import path used to resolve QML modules just for Qt Quick Designer
        QML_DESIGNER_IMPORT_PATH =
        
        # Default rules for deployment.
        qnx: target.path = /tmp/$${TARGET}/bin
        else: unix:!android: target.path = /opt/$${TARGET}/bin
        !isEmpty(target.path): INSTALLS += target
        
        HEADERS += \
            src/comm/network.h \
            src/comm/packet.h \
            src/comm/serialport.h \
            src/controllers/navigationcontroller.h \
            src/controllers/mastercontroller.h
        
        !build_pass:message(GaziStation project dir: $${PWD})
        
        #include <QGuiApplication>
        #include <QQmlApplicationEngine>
        #include <QQmlContext>
        
        #include "spdlog/spdlog.h"
        
        int main(int argc, char *argv[]) {
        #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
          QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
        #endif
        
          QGuiApplication app(argc, argv);
        
          spdlog::info("....");
        
          QQmlApplicationEngine engine;
          engine.addImportPath("qrc:/");
          const QUrl url(QStringLiteral("qrc:/views/MasterView.qml"));
          QObject::connect(
              &engine, &QQmlApplicationEngine::objectCreated, &app,
              [url](QObject *obj, const QUrl &objUrl) {
                if (!obj && url == objUrl)
                  QCoreApplication::exit(-1);
              },
              Qt::QueuedConnection);
          engine.load(url);
        
          return app.exec();
        }
        
        K Offline
        K Offline
        KroMignon
        wrote on 24 Aug 2021, 11:00 last edited by
        #2

        @Enes-Alp said in Spdlog library can't open in the Qt.:

        Did you try to start it in debug mode with Qt Creator?
        I guess the connect() statement is what will stop your application.

        QObject::connect(
        &engine, &QQmlApplicationEngine::objectCreated, &app,
        [url](QObject *obj, const QUrl &objUrl) {
        if (!obj && url == objUrl)
        QCoreApplication::exit(-1);
        },
        Qt::QueuedConnection);

        Why do you check url? The interesting parameter is obj. When obj is null, the instance could not be created.

        It is an old maxim of mine that when you have excluded the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

        1 Reply Last reply
        0
        • E Offline
          E Offline
          Enes Alp
          wrote on 24 Aug 2021, 11:18 last edited by
          #3

          yes I tried the debug and release mode? Also I'm using msvc2019-64bit but when I changed the mingw, I get some linker error.
          URL require for qml side.

          K 1 Reply Last reply 24 Aug 2021, 11:57
          0
          • E Enes Alp
            24 Aug 2021, 11:18

            yes I tried the debug and release mode? Also I'm using msvc2019-64bit but when I changed the mingw, I get some linker error.
            URL require for qml side.

            K Offline
            K Offline
            KroMignon
            wrote on 24 Aug 2021, 11:57 last edited by
            #4

            @Enes-Alp said in Spdlog library can't open in the Qt.:

            I'm using msvc2019-64bit but when I changed the mingw, I get some linker error.

            If you change Qt Kit from MSVC2019-64bit to mingw, you also have to use a compatible spdlog and fmt build version.

            I guess the problem is in the QML code / import path.
            Try to set the environment variable QML_IMPORT_TRACE to got QML traces.
            You can do it in code, like this:

            int main(int argc, char *argv[]) {
            #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
              QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
            #endif
            
              qputenv("QML_IMPORT_TRACE", "1");
              QGuiApplication app(argc, argv);
            
              QQmlApplicationEngine engine;
              engine.addImportPath("qrc:/");
              const QUrl url(QStringLiteral("qrc:/views/MasterView.qml"));
              engine.load(url);
            
              return app.exec();
            }
            

            It is an old maxim of mine that when you have excluded the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

            1 Reply Last reply
            0
            • E Offline
              E Offline
              Enes Alp
              wrote on 24 Aug 2021, 12:11 last edited by
              #5

              The problem is with spd functions.
              When I added the below code, I get a crash.

              spdlog::info("....");
              
              K 1 Reply Last reply 24 Aug 2021, 12:37
              0
              • E Enes Alp
                24 Aug 2021, 12:11

                The problem is with spd functions.
                When I added the below code, I get a crash.

                spdlog::info("....");
                
                K Offline
                K Offline
                KroMignon
                wrote on 24 Aug 2021, 12:37 last edited by
                #6

                @Enes-Alp said in Spdlog library can't open in the Qt.:

                The problem is with spd functions.
                When I added the below code, I get a crash

                How did you build spdlog library?
                Did you use same compiler (MSVC2019-64bit)?

                It is an old maxim of mine that when you have excluded the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

                1 Reply Last reply
                0
                • E Offline
                  E Offline
                  Enes Alp
                  wrote on 24 Aug 2021, 15:48 last edited by Enes Alp
                  #7

                  I installed with vcpkg like this ./vcpkg.exe install spdlog:x64-windows. I didn't compile because the spdlog has static compilation files(spdlog.lib, fmt.lib). I added just include and .lib files.

                  ##- spdlog installed by default c:/dev/vcpkg
                  SPDLOG_ROOT = c:/dev/vcpkg/installed/x64-windows
                  exists($$SPDLOG_ROOT) {
                      LIBS        += -L$$SPDLOG_ROOT/lib -lspdlog -lfmt
                  
                      INCLUDEPATH += $$SPDLOG_ROOT/include
                      DEPENDPATH += $$SPDLOG_ROOT/include
                  
                      DESTDIR_WIN = $$replace(DESTDIR, "/", "\\")
                      SPDLOG_ROOT_WIN = $$replace(SPDLOG_ROOT, "/", "\\")
                  }
                  1 Reply Last reply
                  0
                  • S Offline
                    S Offline
                    SGaist
                    Lifetime Qt Champion
                    wrote on 24 Aug 2021, 17:51 last edited by
                    #8

                    Hi,

                    Are you sure that these libs are static ? A .lib file can either be a static library or import library that will require the use of a dll at run time.

                    Interested in AI ? www.idiap.ch
                    Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                    J 1 Reply Last reply 24 Aug 2021, 18:07
                    0
                    • E Offline
                      E Offline
                      Enes Alp
                      wrote on 24 Aug 2021, 18:03 last edited by
                      #9

                      I don't have any dll file in the lib folder.

                      8ccd8a33-5464-4171-9708-b5a2cf54b7f5-image.png

                      1 Reply Last reply
                      0
                      • S Offline
                        S Offline
                        SGaist
                        Lifetime Qt Champion
                        wrote on 24 Aug 2021, 18:04 last edited by
                        #10

                        Then start your application through the debugger to get a stack trace of the crash.

                        Interested in AI ? www.idiap.ch
                        Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                        E 1 Reply Last reply 24 Aug 2021, 18:13
                        0
                        • S SGaist
                          24 Aug 2021, 17:51

                          Hi,

                          Are you sure that these libs are static ? A .lib file can either be a static library or import library that will require the use of a dll at run time.

                          J Offline
                          J Offline
                          JohanSolo
                          wrote on 24 Aug 2021, 18:07 last edited by
                          #11

                          @SGaist said in Spdlog library can't open in the Qt.:

                          Are you sure that these libs are static ? A .lib file can either be a static library or import library that will require the use of a dll at run time.

                          The spdlog library is either header-only or static.

                          `They did not know it was impossible, so they did it.'
                          -- Mark Twain

                          1 Reply Last reply
                          0
                          • S SGaist
                            24 Aug 2021, 18:04

                            Then start your application through the debugger to get a stack trace of the crash.

                            E Offline
                            E Offline
                            Enes Alp
                            wrote on 24 Aug 2021, 18:13 last edited by
                            #12

                            @SGaist
                            The problem is in the spdlog::info function line. When I delete this line, I don't get errors.

                            P 1 Reply Last reply 24 Aug 2021, 19:33
                            0
                            • S Offline
                              S Offline
                              SGaist
                              Lifetime Qt Champion
                              wrote on 24 Aug 2021, 18:28 last edited by
                              #13

                              Do you have it working if you copy the code of the examples in the library documentation (without any Qt stuff) ?

                              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
                              • E Enes Alp
                                24 Aug 2021, 18:13

                                @SGaist
                                The problem is in the spdlog::info function line. When I delete this line, I don't get errors.

                                P Offline
                                P Offline
                                Pablo J. Rogina
                                wrote on 24 Aug 2021, 19:33 last edited by
                                #14

                                @Enes-Alp said in Spdlog library can't open in the Qt.:

                                The problem is in the spdlog::info function line

                                Have you tried the header-only approach?

                                Upvote the answer(s) that helped you solve the issue
                                Use "Topic Tools" button to mark your post as Solved
                                Add screenshots via postimage.org
                                Don't ask support requests via chat/PM. Please use the forum so others can benefit from the solution in the future

                                1 Reply Last reply
                                0
                                • E Offline
                                  E Offline
                                  Enes Alp
                                  wrote on 24 Aug 2021, 22:04 last edited by
                                  #15

                                  Yes, I tried but I get the same result.

                                  #include <spdlog/spdlog.h>
                                  
                                  int main() {
                                  
                                    spdlog::info("Welcome to spdlog");
                                  
                                    return 0;
                                  }
                                  
                                  QT -= gui
                                  
                                  CONFIG += c++11 console
                                  CONFIG -= app_bundle
                                  
                                  ##- spdlog installed by default c:/dev/vcpkg
                                  
                                  SPDLOG_ROOT = c:/dev/vcpkg/installed/x64-windows
                                  
                                  exists($$SPDLOG_ROOT) {
                                      LIBS        += -L$$SPDLOG_ROOT/lib -lspdlog -lfmt
                                  
                                      INCLUDEPATH += $$SPDLOG_ROOT/include
                                      DEPENDPATH += $$SPDLOG_ROOT/include
                                  
                                      DESTDIR_WIN = $$replace(DESTDIR, "/", "\\")
                                      SPDLOG_ROOT_WIN = $$replace(SPDLOG_ROOT, "/", "\\")
                                  }
                                  
                                  
                                  # You can make your code fail to compile if it uses deprecated APIs.
                                  # In order to do so, uncomment the following line.
                                  #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
                                  
                                  SOURCES += \
                                          main.cpp
                                  
                                  # Default rules for deployment.
                                  qnx: target.path = /tmp/$${TARGET}/bin
                                  else: unix:!android: target.path = /opt/$${TARGET}/bin
                                  !isEmpty(target.path): INSTALLS += target
                                  `
                                  
                                  K 1 Reply Last reply 25 Aug 2021, 06:32
                                  0
                                  • E Enes Alp
                                    24 Aug 2021, 22:04

                                    Yes, I tried but I get the same result.

                                    #include <spdlog/spdlog.h>
                                    
                                    int main() {
                                    
                                      spdlog::info("Welcome to spdlog");
                                    
                                      return 0;
                                    }
                                    
                                    QT -= gui
                                    
                                    CONFIG += c++11 console
                                    CONFIG -= app_bundle
                                    
                                    ##- spdlog installed by default c:/dev/vcpkg
                                    
                                    SPDLOG_ROOT = c:/dev/vcpkg/installed/x64-windows
                                    
                                    exists($$SPDLOG_ROOT) {
                                        LIBS        += -L$$SPDLOG_ROOT/lib -lspdlog -lfmt
                                    
                                        INCLUDEPATH += $$SPDLOG_ROOT/include
                                        DEPENDPATH += $$SPDLOG_ROOT/include
                                    
                                        DESTDIR_WIN = $$replace(DESTDIR, "/", "\\")
                                        SPDLOG_ROOT_WIN = $$replace(SPDLOG_ROOT, "/", "\\")
                                    }
                                    
                                    
                                    # You can make your code fail to compile if it uses deprecated APIs.
                                    # In order to do so, uncomment the following line.
                                    #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
                                    
                                    SOURCES += \
                                            main.cpp
                                    
                                    # Default rules for deployment.
                                    qnx: target.path = /tmp/$${TARGET}/bin
                                    else: unix:!android: target.path = /opt/$${TARGET}/bin
                                    !isEmpty(target.path): INSTALLS += target
                                    `
                                    
                                    K Offline
                                    K Offline
                                    KroMignon
                                    wrote on 25 Aug 2021, 06:32 last edited by
                                    #16

                                    @Enes-Alp said in Spdlog library can't open in the Qt.:

                                    Yes, I tried but I get the same result.

                                    But you don't have change anything, so the result will still be the same.
                                    Header only approach means you add each spdlog header file in INCLUDES and remove spdlog from LIBS.

                                    It is an old maxim of mine that when you have excluded the impossible, whatever remains, however improbable, must be the truth. (Sherlock Holmes)

                                    E 1 Reply Last reply 25 Aug 2021, 10:01
                                    0
                                    • K KroMignon
                                      25 Aug 2021, 06:32

                                      @Enes-Alp said in Spdlog library can't open in the Qt.:

                                      Yes, I tried but I get the same result.

                                      But you don't have change anything, so the result will still be the same.
                                      Header only approach means you add each spdlog header file in INCLUDES and remove spdlog from LIBS.

                                      E Offline
                                      E Offline
                                      Enes Alp
                                      wrote on 25 Aug 2021, 10:01 last edited by
                                      #17

                                      @KroMignon

                                      The Header-only approach is working but how can I add a static link?

                                      INCLUDEPATH += C:/Users/enesa/Documents/Test-Qt-Cpp/include/spdlog/include
                                      1 Reply Last reply
                                      0
                                      • S Offline
                                        S Offline
                                        SGaist
                                        Lifetime Qt Champion
                                        wrote on 25 Aug 2021, 18:56 last edited by
                                        #18

                                        The concept of header only librairies is that you do not have anything to link.

                                        Interested in AI ? www.idiap.ch
                                        Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                                        E 1 Reply Last reply 25 Aug 2021, 23:08
                                        1
                                        • S SGaist
                                          25 Aug 2021, 18:56

                                          The concept of header only librairies is that you do not have anything to link.

                                          E Offline
                                          E Offline
                                          Enes Alp
                                          wrote on 25 Aug 2021, 23:08 last edited by
                                          #19

                                          @SGaist

                                          In the doc, the static lib version is much faster in compile time.
                                          What is the meaning of this, you know?

                                          dcd103a4-6988-4f41-a3a3-79558ac067c8-image.png

                                          1 Reply Last reply
                                          0
                                          • S Offline
                                            S Offline
                                            SGaist
                                            Lifetime Qt Champion
                                            wrote on 26 Aug 2021, 20:52 last edited by
                                            #20

                                            The header only library means that you do not have to link anything but this means that you will build everything you use from it on each build.

                                            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

                                            5/20

                                            24 Aug 2021, 12:11

                                            15 unread
                                            • Login

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