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. Linking a lib with QT on linux
Forum Updated to NodeBB v4.3 + New Features

Linking a lib with QT on linux

Scheduled Pinned Locked Moved Solved General and Desktop
22 Posts 4 Posters 3.4k 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.
  • jsulmJ jsulm

    @Keith-Harville said in Linking a lib with QT on linux:

    "g++: error: libfw_console_api: No such file or directory"

    Can you please show your pro file? Because the suggestion from @mrjj is the correct approach to link libraries with qmake.

    K Offline
    K Offline
    Keith Harville
    wrote on last edited by
    #7

    @jsulm @mrjj

    here is my full .pro

    QT += core gui charts
    #CONFIG += console
    
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
    
    TARGET = frameworkConsole
    TEMPLATE = app
    
    
    CONFIG += c++11 app_bundle
    #CONFIG -= app_bundle
    
    # 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
    
    # 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
    
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
    
    INCLUDEPATH += ../../../../inc
    
    SOURCES += \
        ../../../src/countercontrol.cpp \
        ../../../src/discoveryeventthread.cpp \
        ../../../src/discoveryprogress.cpp \
        ../../../src/dockbutton.cpp \
        ../../../src/enablebutton.cpp \
        ../../../src/frameworkConsole.cpp \
        ../../../src/hdavconfig.cpp \
        ../../../src/main.cpp \
        ../../../src/moduleinfodialog.cpp \
        ../../../src/nodetreeview.cpp \
        ../../../src/playstopbutton.cpp
    
    HEADERS += \
        ../../../src/countercontrol.h \
        ../../../src/discoveryeventthread.h \
        ../../../src/discoveryprogress.h \
        ../../../src/dockbutton.h \
        ../../../src/enablebutton.h \
        ../../../src/frameworkConsole.h \
        ../../../src/hdavconfig.h \
        ../../../src/moduleinfodialog.h \
        ../../../src/nodetreeview.h \
        ../../../src/playstopbutton.h
    
    
    # Default rules for deployment.
    qnx: target.path = /tmp/$${TARGET}/bin
    else: unix:!android: target.path = /opt/$${TARGET}/bin
    !isEmpty(target.path): INSTALLS += target
    
    unix:!macx: LIBS += -L$$PWD/../ -lfw_console_api
    
    INCLUDEPATH += $$PWD/../
    DEPENDPATH += $$PWD/../
    
    1 Reply Last reply
    0
    • K Offline
      K Offline
      Keith Harville
      wrote on last edited by
      #8

      I have created a small test app and made one call to the library as well.

      I can send you the full source for test app as well.

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

        Hi
        If libray is compiled with same compiler and all that is in order, then
        its most of the time just a path issue.

        However, that is hard to test so the mini sample is a good thing.

        Could you upload to say
        https://wetransfer.com/
        and use the get link
        alt text

        and paste link here so we could try run the project ?

        1 Reply Last reply
        0
        • K Offline
          K Offline
          Keith Harville
          wrote on last edited by
          #10

          here is a link to the testApp.zip it should include everything

          https://we.tl/t-TcnN3DZR7b

          mrjjM 1 Reply Last reply
          0
          • K Keith Harville

            here is a link to the testApp.zip it should include everything

            https://we.tl/t-TcnN3DZR7b

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

            @Keith-Harville
            Link works.
            However, its seems the cpp for libfw_console_api.so is not included ?

            So we also need to know the gcc version used to compile the test app.
            Just we are sure to use ca. the same version.

            I assume no Qt was used in libfw_console_api so Qt version is not important.

            1 Reply Last reply
            1
            • Christian EhrlicherC Offline
              Christian EhrlicherC Offline
              Christian Ehrlicher
              Lifetime Qt Champion
              wrote on last edited by
              #12

              @mrjj said in Linking a lib with QT on linux:

              So we also need to know the gcc version used to compile the test app.

              And the complete error message.

              Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
              Visit the Qt Academy at https://academy.qt.io/catalog

              1 Reply Last reply
              1
              • K Offline
                K Offline
                Keith Harville
                wrote on last edited by
                #13

                gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.12)

                1 Reply Last reply
                0
                • K Offline
                  K Offline
                  Keith Harville
                  wrote on last edited by
                  #14

                  undefined reference to `fwConsole_initConsoleHeader(FW_CONSOLE_HEADER*)'

                  1 Reply Last reply
                  0
                  • Christian EhrlicherC Offline
                    Christian EhrlicherC Offline
                    Christian Ehrlicher
                    Lifetime Qt Champion
                    wrote on last edited by
                    #15

                    Since it's a C library you must make sure that the compiler also interpret your header as C ->

                    extern "C"
                    {
                    #include "fw_console_api.h"
                    }
                    

                    Or fix the header so it's not needed for every include of it.

                    Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
                    Visit the Qt Academy at https://academy.qt.io/catalog

                    mrjjM 1 Reply Last reply
                    4
                    • K Offline
                      K Offline
                      Keith Harville
                      wrote on last edited by
                      #16

                      Thank you so much, that fixed it

                      1 Reply Last reply
                      0
                      • Christian EhrlicherC Christian Ehrlicher

                        Since it's a C library you must make sure that the compiler also interpret your header as C ->

                        extern "C"
                        {
                        #include "fw_console_api.h"
                        }
                        

                        Or fix the header so it's not needed for every include of it.

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

                        @Christian-Ehrlicher
                        Hi
                        You are so fast. :)
                        What did you run on it too see it was a C lib ?
                        or just be looking in the .h file ?

                        1 Reply Last reply
                        0
                        • Christian EhrlicherC Offline
                          Christian EhrlicherC Offline
                          Christian Ehrlicher
                          Lifetime Qt Champion
                          wrote on last edited by
                          #18

                          @mrjj said in Linking a lib with QT on linux:

                          What did you run on it too see it was a C lib ?

                          I got a linker error, looked at the exports and they looked like plain C exports. Then the idea with the wrong symbols was there :)

                          Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
                          Visit the Qt Academy at https://academy.qt.io/catalog

                          mrjjM 1 Reply Last reply
                          2
                          • Christian EhrlicherC Christian Ehrlicher

                            @mrjj said in Linking a lib with QT on linux:

                            What did you run on it too see it was a C lib ?

                            I got a linker error, looked at the exports and they looked like plain C exports. Then the idea with the wrong symbols was there :)

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

                            @Christian-Ehrlicher
                            Ok, where did you look at the exports ?
                            With objdump or ?
                            Im asking as i want to learn. Since you knew so fast and i was still looking at it :)

                            1 Reply Last reply
                            0
                            • Christian EhrlicherC Offline
                              Christian EhrlicherC Offline
                              Christian Ehrlicher
                              Lifetime Qt Champion
                              wrote on last edited by
                              #20

                              @mrjj said in Linking a lib with QT on linux:

                              With objdump or ?

                              Yes, "objdump -T" - take a look at the libfw_console_api.so output and you will notice that they're plain C functions - they are not annotated.

                              Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
                              Visit the Qt Academy at https://academy.qt.io/catalog

                              mrjjM 1 Reply Last reply
                              2
                              • Christian EhrlicherC Christian Ehrlicher

                                @mrjj said in Linking a lib with QT on linux:

                                With objdump or ?

                                Yes, "objdump -T" - take a look at the libfw_console_api.so output and you will notice that they're plain C functions - they are not annotated.

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

                                @Christian-Ehrlicher
                                Thank you
                                Its handy to know. goes on my of list of things to try when you get undefined's and
                                checked path many times :=)

                                1 Reply Last reply
                                0
                                • K Offline
                                  K Offline
                                  Keith Harville
                                  wrote on last edited by
                                  #22

                                  for the header fix, I added in the header and that took care of it

                                  #ifdef __cplusplus
                                  #define FWCONSOLEAPI_DECLSPEC extern  "C"
                                  #else
                                  #define FWCONSOLEAPI_DECLSPEC extern
                                  #endif//__cplusplus
                                  

                                  thank you again, you guys are awesome

                                  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