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. Adding Nordic pc-ble driver to Qt application
Forum Updated to NodeBB v4.3 + New Features

Adding Nordic pc-ble driver to Qt application

Scheduled Pinned Locked Moved Solved General and Desktop
5 Posts 3 Posters 581 Views 1 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.
  • K Offline
    K Offline
    Kampino
    wrote on last edited by
    #1

    Hello,

    I try to add the Nordic pc-ble driver to a Qt application. For this I create a simple and empty window:

    Project.pro

    VERSION_MAJOR = 1
    VERSION_MINOR = 0
    VERSION_BUILD = 0
    
    QT       += core gui serialport
    
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
    
    CONFIG += c++11 file_copies
    
    COPIES += packageSetup configSetup
    
    # The following define makes your compiler emit warnings if you use
    # any Qt feature that has been marked deprecated (the exact warnings
    # depend on your compiler). Please consult the documentation of the
    # deprecated API in order to know how to port your code away from it.
    DEFINES += QT_DEPRECATED_WARNINGS \
               "VERSION_MAJOR=$$VERSION_MAJOR" \
               "VERSION_MINOR=$$VERSION_MINOR" \
               "VERSION_BUILD=$$VERSION_BUILD" \
    
    # You can also make your code fail to compile if it uses deprecated APIs.
    # In order to do so, uncomment the following line.
    # You can also select to disable deprecated APIs only up to a certain version of Qt.
    #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
    
    RESOURCES += \
        Ressources.qrc
    
    DEPENDPATH += \
        Nordic/nrf-ble-driver-4.1.4-win_x86_64/include/sd_api_v5 \
    
    INCLUDEPATH += \
        Nordic/nrf-ble-driver-4.1.4-win_x86_64/include/sd_api_v5 \
    
    SOURCES += \
        main.cpp \
        mainwindow.cpp \
    
    HEADERS += \
        mainwindow.h \
    
    FORMS += \
        mainwindow.ui \
    
    TRANSLATIONS += \
    
    LIBS += \
        -L$${PWD}/Nordic/nrf-ble-driver-4.1.4-win_x86_64/lib -lnrf-ble-driver-sd_api_v5-mt-4_1_4 \
        -L$${PWD}/Nordic/nrf-ble-driver-4.1.4-win_x86_64/lib -lnrf-ble-driver-sd_api_v5-mt-static-4_1_4 \
    
    # Target version
    VERSION = $${VERSION_MAJOR}.$${VERSION_MINOR}.$${VERSION_BUILD}
    
    # Set the application icon
    win32:RC_ICONS +=
    
    # Set the build directories
    CONFIG(debug, debug|release) {
        DESTDIR = debug
    } else {
        DESTDIR = ../packages/com.daniel-kampert.DataDownloader/data
    }
    
    # Copy package and configuration files
    CONFIG(debug, debug|release) {
        packageSetup.path = $$shell_quote($${OUT_PWD}/debug)
        configSetup.path = $$shell_quote($${OUT_PWD}/debug)
    } else {
        packageSetup.path = $$shell_quote($${DESTDIR})
        configSetup.path = $$shell_quote(../config)
    }
    
    # Deployment rules
    DEPLOY_COMMAND = $$(QTDIR)/bin/windeployqt
    DEPLOY_OPTIONS = "--no-system-d3d-compiler --no-opengl --no-angle --no-opengl-sw"
    DEPLOY_TARGET = $$shell_quote($$shell_path($${DESTDIR}/$${TARGET}.exe))
    CONFIG(debug, debug|release) {
        DEPLOY_OPTIONS += "--debug"
    } else {
        DEPLOY_OPTIONS += "--release"
    }
    
    QMAKE_POST_LINK = $${DEPLOY_COMMAND} $${DEPLOY_OPTIONS} $${DEPLOY_TARGET}
    

    mainwindow.cpp

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    
    void MainWindow::StatusHandler(adapter_t * Adapter, sd_rpc_app_status_t code, const char * message)
    {
    }
    
    void MainWindow::ble_evt_dispatch(adapter_t * Adapter, ble_evt_t * p_ble_evt)
    {
    }
    
    void MainWindow::log_handler(adapter_t* adapter, sd_rpc_log_severity_t severity, const char * message)
    {
    }
    
    MainWindow::MainWindow(QWidget* parent) :   QMainWindow(parent),
                                                _mUi(new Ui::MainWindow)
    {
        this->_mUi->setupUi(this);
    
        physical_layer_t * phy;
    
        phy = sd_rpc_physical_layer_create_uart("COM5", 1000000, SD_RPC_FLOW_CONTROL_NONE, SD_RPC_PARITY_NONE);
    }
    
    MainWindow::~MainWindow()
    {
        delete this->_mUi;
    }
    

    But I can´t start (or debug) the application, because the application crashes without any specific error.

    Error.png

    I have tried it with both Kits in Debug and Release configuration.

    Kits.png

    What is wrong here and how can I link this library to my application?

    jsulmJ 1 Reply Last reply
    0
    • SGaistS Offline
      SGaistS Offline
      SGaist
      Lifetime Qt Champion
      wrote on last edited by
      #4

      Hi,

      Beside the point made by @jsulm, did you ensure that the .dlls can be found at run time by your application.

      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
      • K Kampino

        Hello,

        I try to add the Nordic pc-ble driver to a Qt application. For this I create a simple and empty window:

        Project.pro

        VERSION_MAJOR = 1
        VERSION_MINOR = 0
        VERSION_BUILD = 0
        
        QT       += core gui serialport
        
        greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
        
        CONFIG += c++11 file_copies
        
        COPIES += packageSetup configSetup
        
        # The following define makes your compiler emit warnings if you use
        # any Qt feature that has been marked deprecated (the exact warnings
        # depend on your compiler). Please consult the documentation of the
        # deprecated API in order to know how to port your code away from it.
        DEFINES += QT_DEPRECATED_WARNINGS \
                   "VERSION_MAJOR=$$VERSION_MAJOR" \
                   "VERSION_MINOR=$$VERSION_MINOR" \
                   "VERSION_BUILD=$$VERSION_BUILD" \
        
        # You can also make your code fail to compile if it uses deprecated APIs.
        # In order to do so, uncomment the following line.
        # You can also select to disable deprecated APIs only up to a certain version of Qt.
        #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
        
        RESOURCES += \
            Ressources.qrc
        
        DEPENDPATH += \
            Nordic/nrf-ble-driver-4.1.4-win_x86_64/include/sd_api_v5 \
        
        INCLUDEPATH += \
            Nordic/nrf-ble-driver-4.1.4-win_x86_64/include/sd_api_v5 \
        
        SOURCES += \
            main.cpp \
            mainwindow.cpp \
        
        HEADERS += \
            mainwindow.h \
        
        FORMS += \
            mainwindow.ui \
        
        TRANSLATIONS += \
        
        LIBS += \
            -L$${PWD}/Nordic/nrf-ble-driver-4.1.4-win_x86_64/lib -lnrf-ble-driver-sd_api_v5-mt-4_1_4 \
            -L$${PWD}/Nordic/nrf-ble-driver-4.1.4-win_x86_64/lib -lnrf-ble-driver-sd_api_v5-mt-static-4_1_4 \
        
        # Target version
        VERSION = $${VERSION_MAJOR}.$${VERSION_MINOR}.$${VERSION_BUILD}
        
        # Set the application icon
        win32:RC_ICONS +=
        
        # Set the build directories
        CONFIG(debug, debug|release) {
            DESTDIR = debug
        } else {
            DESTDIR = ../packages/com.daniel-kampert.DataDownloader/data
        }
        
        # Copy package and configuration files
        CONFIG(debug, debug|release) {
            packageSetup.path = $$shell_quote($${OUT_PWD}/debug)
            configSetup.path = $$shell_quote($${OUT_PWD}/debug)
        } else {
            packageSetup.path = $$shell_quote($${DESTDIR})
            configSetup.path = $$shell_quote(../config)
        }
        
        # Deployment rules
        DEPLOY_COMMAND = $$(QTDIR)/bin/windeployqt
        DEPLOY_OPTIONS = "--no-system-d3d-compiler --no-opengl --no-angle --no-opengl-sw"
        DEPLOY_TARGET = $$shell_quote($$shell_path($${DESTDIR}/$${TARGET}.exe))
        CONFIG(debug, debug|release) {
            DEPLOY_OPTIONS += "--debug"
        } else {
            DEPLOY_OPTIONS += "--release"
        }
        
        QMAKE_POST_LINK = $${DEPLOY_COMMAND} $${DEPLOY_OPTIONS} $${DEPLOY_TARGET}
        

        mainwindow.cpp

        #include "mainwindow.h"
        #include "ui_mainwindow.h"
        
        void MainWindow::StatusHandler(adapter_t * Adapter, sd_rpc_app_status_t code, const char * message)
        {
        }
        
        void MainWindow::ble_evt_dispatch(adapter_t * Adapter, ble_evt_t * p_ble_evt)
        {
        }
        
        void MainWindow::log_handler(adapter_t* adapter, sd_rpc_log_severity_t severity, const char * message)
        {
        }
        
        MainWindow::MainWindow(QWidget* parent) :   QMainWindow(parent),
                                                    _mUi(new Ui::MainWindow)
        {
            this->_mUi->setupUi(this);
        
            physical_layer_t * phy;
        
            phy = sd_rpc_physical_layer_create_uart("COM5", 1000000, SD_RPC_FLOW_CONTROL_NONE, SD_RPC_PARITY_NONE);
        }
        
        MainWindow::~MainWindow()
        {
            delete this->_mUi;
        }
        

        But I can´t start (or debug) the application, because the application crashes without any specific error.

        Error.png

        I have tried it with both Kits in Debug and Release configuration.

        Kits.png

        What is wrong here and how can I link this library to my application?

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

        @Kampino said in Adding Nordic pc-ble driver to Qt application:

        -L$${PWD}/Nordic/nrf-ble-driver-4.1.4-win_x86_64/lib -lnrf-ble-driver-sd_api_v5-mt-4_1_4
        -L$${PWD}/Nordic/nrf-ble-driver-4.1.4-win_x86_64/lib -lnrf-ble-driver-sd_api_v5-mt-static-4_1_4

        Why do you add static and non-static libs at the same time?
        Which compiler was used to build that driver lib?

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

        1 Reply Last reply
        0
        • K Offline
          K Offline
          Kampino
          wrote on last edited by
          #3

          Hi,

          that was a misstake. I have removed the static version:

          VERSION_MAJOR = 1
          VERSION_MINOR = 0
          VERSION_BUILD = 0
          
          QT       += core gui serialport
          
          greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
          
          CONFIG += c++11 file_copies
          
          COPIES += packageSetup configSetup
          
          # The following define makes your compiler emit warnings if you use
          # any Qt feature that has been marked deprecated (the exact warnings
          # depend on your compiler). Please consult the documentation of the
          # deprecated API in order to know how to port your code away from it.
          DEFINES += QT_DEPRECATED_WARNINGS \
                     "VERSION_MAJOR=$$VERSION_MAJOR" \
                     "VERSION_MINOR=$$VERSION_MINOR" \
                     "VERSION_BUILD=$$VERSION_BUILD" \
          
          # You can also make your code fail to compile if it uses deprecated APIs.
          # In order to do so, uncomment the following line.
          # You can also select to disable deprecated APIs only up to a certain version of Qt.
          #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
          
          RESOURCES += \
              Ressources.qrc
          
          DEPENDPATH += \
              Nordic/nrf-ble-driver-4.1.4-win_x86_64/include/sd_api_v5 \
          
          INCLUDEPATH += \
              Nordic/nrf-ble-driver-4.1.4-win_x86_64/include/sd_api_v5 \
          
          SOURCES += \
              main.cpp \
              mainwindow.cpp \
          
          HEADERS += \
              mainwindow.h \
          
          FORMS += \
              mainwindow.ui \
          
          TRANSLATIONS += \
          
          LIBS += \
              -L$${PWD}/Nordic/nrf-ble-driver-4.1.4-win_x86_64/lib -lnrf-ble-driver-sd_api_v5-mt-4_1_4 \
          
          # Target version
          VERSION = $${VERSION_MAJOR}.$${VERSION_MINOR}.$${VERSION_BUILD}
          
          # Set the application icon
          win32:RC_ICONS +=
          
          # Set the build directories
          CONFIG(debug, debug|release) {
              DESTDIR = debug
          } else {
              DESTDIR = ../packages/com.daniel-kampert.DataDownloader/data
          }
          
          # Copy package and configuration files
          CONFIG(debug, debug|release) {
              packageSetup.path = $$shell_quote($${OUT_PWD}/debug)
              configSetup.path = $$shell_quote($${OUT_PWD}/debug)
          } else {
              packageSetup.path = $$shell_quote($${DESTDIR})
              configSetup.path = $$shell_quote(../config)
          }
          
          #packageSetup.files += $$shell_quote(Ressources/Icons/icons8-food-96.ico) \
          #                      $$shell_quote(Ressources/Icons/icons8-food-96.png) \
          
          #configSetup.files += $$shell_quote(Ressources/Icons/icons8-food-96.ico) \
          #                     $$shell_quote(Ressources/Icons/icons8-food-96.png) \
          
          # Deployment rules
          DEPLOY_COMMAND = $$(QTDIR)/bin/windeployqt
          DEPLOY_OPTIONS = "--no-system-d3d-compiler --no-opengl --no-angle --no-opengl-sw"
          DEPLOY_TARGET = $$shell_quote($$shell_path($${DESTDIR}/$${TARGET}.exe))
          CONFIG(debug, debug|release) {
              DEPLOY_OPTIONS += "--debug"
          } else {
              DEPLOY_OPTIONS += "--release"
          }
          
          QMAKE_POST_LINK = $${DEPLOY_COMMAND} $${DEPLOY_OPTIONS} $${DEPLOY_TARGET}
          
          

          I have downloaded the prebuild version of the library from the release page (64 Bit Windows), so I don´t know which compiler was used to get the build.

          1 Reply Last reply
          0
          • SGaistS Offline
            SGaistS Offline
            SGaist
            Lifetime Qt Champion
            wrote on last edited by
            #4

            Hi,

            Beside the point made by @jsulm, did you ensure that the .dlls can be found at run time by your application.

            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
            • K Offline
              K Offline
              Kampino
              wrote on last edited by
              #5

              Hi @SGaist,

              I forgot the DLLs. It´s working now :)

              1 Reply Last reply
              0

              • Login

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