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

    On the sentence "tested the library using some command sample code which is fine." I made a test app on command line to test the libfw_console_api.so library, and i was able to link the library and test the function calls successfully.

    I have checked the paths multiple times and copied the library in different places.. still no luck.

    since its SO library, I tired like your friend said "libfw_console_api" but I got "g++: error: libfw_console_api: No such file or directory"

    added .so libfw_console_api.so and now I am back to my original problem "undefined reference to "library function name"

    How do I do the nm and objdump to make sure the symbols

    jsulmJ 1 Reply Last reply
    0
    • K Keith Harville

      On the sentence "tested the library using some command sample code which is fine." I made a test app on command line to test the libfw_console_api.so library, and i was able to link the library and test the function calls successfully.

      I have checked the paths multiple times and copied the library in different places.. still no luck.

      since its SO library, I tired like your friend said "libfw_console_api" but I got "g++: error: libfw_console_api: No such file or directory"

      added .so libfw_console_api.so and now I am back to my original problem "undefined reference to "library function name"

      How do I do the nm and objdump to make sure the symbols

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

      @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.

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

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