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. How to link .o object library in QT Creator?
QtWS25 Last Chance

How to link .o object library in QT Creator?

Scheduled Pinned Locked Moved General and Desktop
4 Posts 2 Posters 5.3k 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.
  • S Offline
    S Offline
    stevewang
    wrote on last edited by
    #1

    Hi all,

    I have a problem in linking the .o object library in my QT project.
    So this is what I wrote in the .pro file

    [code]
    LIBS += $$PRO_FILE_PWD/libs/triangle.o
    INCLUDEPATH += $$PRO_FILE_PWD/libs
    DEPENDPATH += $$PRO_FILE_PWD/libs
    [/code]

    In the $$PRO_FILE_PWD/libs directory has two files: "triangle.o", "triangle.h" and "triangle.c" (triangle.o is compiled in my machine so it should be compatible with my machine).
    But the QT Creator said "symbols not found", which means the definition of the functions declared in "trianle.h" cannot be found.

    Does anyone know why? Thanks a lot.

    1 Reply Last reply
    0
    • C Offline
      C Offline
      compor
      wrote on last edited by
      #2

      a .o file is not a DSO (dynamic shared object - .so .dll etc)

      if you want to treat it as a DSO, you will have to build and link it as such using a separate .pro where the main option is

      @
      TEMPLATE = lib
      @

      if you just want to include it during the linking of your main app,
      then i suggest you add the corresponding files to the qmake variables

      @
      SOURCES = triangle.h

      HEADERS = triangle.c
      @

      purposes as understood by the purposer will be misunderstood by others

      1 Reply Last reply
      0
      • S Offline
        S Offline
        stevewang
        wrote on last edited by
        #3

        Hi compor,

        Thanks for your answer.
        I understand your point. But I saw some similar posts in stack overflow and Qt Center, where some people said .o file can just work as well. Can you explain more details to me?

        http://stackoverflow.com/questions/4644643/how-to-add-object-files-to-a-project-in-qt

        http://www.qtcentre.org/threads/35033-How-to-link-to-o-object-file-in-a-QT-project

        Thank you very much.

        [quote author="compor" date="1389962078"]a .o file is not a DSO (dynamic shared object - .so .dll etc)

        if you want to treat it as a DSO, you will have to build and link it as such using a separate .pro where the main option is

        @
        TEMPLATE = lib
        @

        if you just want to include it during the linking of your main app,
        then i suggest you add the corresponding files to the qmake variables

        @
        SOURCES = triangle.h

        HEADERS = triangle.c
        @
        [/quote]

        1 Reply Last reply
        0
        • C Offline
          C Offline
          compor
          wrote on last edited by
          #4

          the main difference is that a DSO contains code that is relocatable,
          so many apps can link against it and use it at the same time.

          even if you are the only user, there are many benefits from distibuting your code as a DSO.
          there are plenty resources on the matter in the net.

          now, if you just want to use the .o file, maybe you could try the following

          @
          OBJECTS += triangle.o
          @

          or even

          @
          OBJECTS += $$PRO_FILE_PWD/libs/triangle.o
          @

          according to qmake's reference

          bq. This variable is generated from the SOURCES variable. The extension of each source file will have been replaced by .o (Unix) or .obj (Win32). The value of this variable is typically handled by qmake or qmake.conf and rarely needs to be modified.

          so i'm not sure it will work as you intend it to.

          purposes as understood by the purposer will be misunderstood by others

          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