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. Right way to include files from an external project?

Right way to include files from an external project?

Scheduled Pinned Locked Moved Solved General and Desktop
2 Posts 1 Posters 814 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.
  • J Offline
    J Offline
    Josz
    wrote on last edited by Josz
    #1

    Hello everybody,

    I would like to include a C++ project into my Qt project; I created a subdirectory for content all data with a .pri inside.

    here is the tree from my project:

            drawRange+
    		 +drawRange.pro
    		 +main.cpp
    		 +---->drawRangeGUI    (here ist my Qt MainWindow)
    		 +
    		 +---->hmisg+
    			    +hmisg.pri       (the pri for my subproject)
    			    +hmisg.cpp
    			    +---->erpc-1.7.1+
    				            +---->erpc_c+
    							+---->config                    <---	In each subdirectory here
    							+---->infra			<---	are many files 
    							+---->port			<---    that I want 
    							+---->setup			<---    for my 
    							+---->transports	        <---    project
    
    

    I created the .pri, first manually, after from Qt Creator with "(right mouse button in the project)-->Add Existing Files"

    Here is my drawRange.pro

    QT       += core gui charts
    
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
    TARGET = drawRange
    TEMPLATE = app
    include(drawRangeGUI/drawRangeGUI.pri)
    include(hmisg/hmisg.pri)
    
    DEFINES += QT_DEPRECATED_WARNINGS
    CONFIG += c++11
    
    SOURCES += \
            main.cpp
    
    HEADERS +=
    
    FORMS += \
    
    # Default rules for deployment.
    qnx: target.path = /tmp/$${TARGET}/bin
    else: unix:!android: target.path = /opt/$${TARGET}/bin
    !isEmpty(target.path): INSTALLS += target
    
    DISTFILES += \
        drawRangeGUI/drawrange.pri
    
    

    and my hmisg.pri.pri

    INCLUDEPATH += $$PWD \
                    $$PWD/erpc-1.7.1/erpc_c/port \
                    $$PWD/erpc-1.7.1/erpc_c/infra \
                    $$PWD/erpc-1.7.1/erpc_c/setup \
                    $$PWD/erpc-1.7.1/erpc_c/config \
                    $$PWD/erpc-1.7.1/erpc_c/transports
    
    DEPENDPATH += $$PWD \
                    $$PWD/erpc-1.7.1/erpc_c/port \
                    $$PWD/erpc-1.7.1/erpc_c/infra \
                    $$PWD/erpc-1.7.1/erpc_c/setup \
                    $$PWD/erpc-1.7.1/erpc_c/config \
                    $$PWD/erpc-1.7.1/erpc_c/transports
    
    HEADERS += \
        $$PWD/hmisg.h \
        $$PWD/erpc-1.7.1/erpc_c/setup/erpc_server_setup.h \
        $$PWD/erpc-1.7.1/erpc_c/setup/erpc_client_setup.h \
        $$PWD/erpc-1.7.1/erpc_c/infra/erpc_basic_codec.h \
        $$PWD/erpc-1.7.1/erpc_c/infra/erpc_client_manager.h \
        $$PWD/erpc-1.7.1/erpc_c/infra/erpc_codec.h \
        $$PWD/erpc-1.7.1/erpc_c/infra/erpc_common.h \
        $$PWD/erpc-1.7.1/erpc_c/infra/erpc_crc16.h \
        $$PWD/erpc-1.7.1/erpc_c/infra/erpc_framed_transport.h \
        $$PWD/erpc-1.7.1/erpc_c/infra/erpc_manually_constructed.h \
        $$PWD/erpc-1.7.1/erpc_c/infra/erpc_message_buffer.h \
        $$PWD/erpc-1.7.1/erpc_c/infra/erpc_server.h \
        $$PWD/erpc-1.7.1/erpc_c/infra/erpc_simple_server.h \
        $$PWD/erpc-1.7.1/erpc_c/infra/erpc_transport.h \
        $$PWD/erpc-1.7.1/erpc_c/infra/erpc_version.h \
        $$PWD/erpc-1.7.1/erpc_c/setup/erpc_mbf_setup.h \
        $$PWD/erpc-1.7.1/erpc_c/setup/erpc_transport_setup.h \
        $$PWD/erpc-1.7.1/erpc_c/config/erpc_config.h \
        $$PWD/erpc-1.7.1/erpc_c/port/erpc_config_internal.h \
        $$PWD/erpc-1.7.1/erpc_c/port/erpc_port.h \
        $$PWD/erpc-1.7.1/erpc_c/port/erpc_threading.h \
        $$PWD/erpc-1.7.1/erpc_c/transports/erpc_tcp_transport_win.h
    
    SOURCES += \
        $$PWD/hmisg.cpp \
        $$PWD/erpc-1.7.1/erpc_c/setup/erpc_server_setup.cpp \
        $$PWD/erpc-1.7.1/erpc_c/setup/erpc_client_setup.cpp \
        $$PWD/erpc-1.7.1/erpc_c/infra/erpc_basic_codec.cpp \
        $$PWD/erpc-1.7.1/erpc_c/infra/erpc_client_manager.cpp \
        $$PWD/erpc-1.7.1/erpc_c/infra/erpc_crc16.cpp \
        $$PWD/erpc-1.7.1/erpc_c/infra/erpc_framed_transport.cpp \
        $$PWD/erpc-1.7.1/erpc_c/infra/erpc_message_buffer.cpp \
        $$PWD/erpc-1.7.1/erpc_c/infra/erpc_server.cpp \
        $$PWD/erpc-1.7.1/erpc_c/infra/erpc_simple_server.cpp \
        $$PWD/erpc-1.7.1/erpc_c/setup/erpc_setup_mbf_dynamic.cpp \
        $$PWD/erpc-1.7.1/erpc_c/setup/erpc_setup_tcp.cpp \
        $$PWD/erpc-1.7.1/erpc_c/port/erpc_threading_windows.cpp \
        $$PWD/erpc-1.7.1/erpc_c/transports/erpc_tcp_transport_win.cpp
    

    But after compile, I obtained 86 errors of a project that did work in Visual Studio. it seems to have to do with the inclusion of <Windows.h>, <winsock2.h>, <ws2tcpip.h> and others among the files, because when I comment in a File <winsock2.h> and <ws2tcpip.h>, the number of errors falls to 24, but I get fails like

    D:\@Qt_Projects\drawRange\hmisg\erpc-1.7.1\erpc_c\transports\erpc_tcp_transport_win.cpp:159: error: C2079: 'hints' uses undefined struct 'erpc::TCPTransport::connectClient::addrinfo'
    

    for the next line:

    struct addrinfo hints = { 0 };
    

    with a little patience, I discovered that the structure is defined in <ws2def.h> like

    typedef struct addrinfo
    {
        int                 ai_flags;       // AI_PASSIVE, AI_CANONNAME, AI_NUMERICHOST
        int                 ai_family;      // PF_xxx
        int                 ai_socktype;    // SOCK_xxx
        int                 ai_protocol;    // 0 or IPPROTO_xxx for IPv4 and IPv6
        size_t              ai_addrlen;     // Length of ai_addr
        char *              ai_canonname;   // Canonical name for nodename
        _Field_size_bytes_(ai_addrlen) struct sockaddr *   ai_addr;        // Binary address
        struct addrinfo *   ai_next;        // Next structure in linked list
    }
    ADDRINFOA, *PADDRINFOA;
    

    Is my way the right to include the files? Why I get this issues in a project that compile in other tool?

    please, any help will be welcomed.
    Thanks in advance

    1 Reply Last reply
    0
    • J Offline
      J Offline
      Josz
      wrote on last edited by
      #2

      I found a solution

      using:

      #define _WINSOCKAPI_            // stops windows.h including winsock.h
      

      before

      #include <winsock2.h>
      #include <ws2tcpip.h>
      
      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