Qt Forum

    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Unsolved

    Update: Forum Guidelines & Code of Conduct


    Qt World Summit: Early-Bird Tickets

    Trying to statically link enet libraries not working.

    3rd Party Software
    2
    5
    3184
    Loading More Posts
    • 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.
    • B
      blah900 last edited by

      So I am developing in QT 5 on windows 7 using qt creator.

      I wanted to link enet library found http://enet.bespin.org/

      I used qt creator to add statically linked external library and selected the enet64.lib and even tried adding in enet.lib but it doesn't seem to register the linkage at all.

      Some help would be greatly appreciated. Thanks!

      Some more info:

      I tried including the enet64.lib and enet.lib in the pro file by copying the enet libraries into the directory and using LIBS += -lenet64 and LIBS += -lenet
      Then I included the necessary header files found in the directory.

      However it keeps saying that I have unresolved external symbol which should be defined in the library.

      Any ideas?

      1 Reply Last reply Reply Quote 0
      • B
        bodzio131 last edited by

        Have you added both 64/32 bit library into the same build process? If yes then you should use only apropriate version, not both together.
        Could you attach full error message from linker? I would like to see which symbol is missed.
        Have you check if enet library already contains the missed symbol?

        1 Reply Last reply Reply Quote 0
        • B
          blah900 last edited by

          So, my pro file looks like so:
          @-------------------------------------------------

          Project created by QtCreator 2013-07-20T21:20:18

          #-------------------------------------------------

          QT += core gui

          greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

          TARGET = EnetTest
          TEMPLATE = app

          SOURCES += main.cpp
          MainWindow.cpp

          HEADERS += MainWindow.h
          enet/win32.h
          enet/utility.h
          enet/unix.h
          enet/types.h
          enet/time.h
          enet/protocol.h
          enet/list.h
          enet/enet.h
          enet/callbacks.h

          FORMS += MainWindow.ui

          LIBS += -LC:/testDirectory/enetTest -lenet64@

          And my main looks like so:
          @#include "MainWindow.h"
          #include <QApplication>
          #include "enet/enet.h"
          int main(int argc, char *argv[])
          {
          QApplication a(argc, argv);
          MainWindow w;
          w.show();
          enet_initialize();
          return a.exec();
          }@

          I compiled it with MSVC 2012 64 bit option in qt creator.
          When I call enet_initialize() it says things like: unresolved exernal symbol (name of function) referenced in function enet_initialize(and other functions inside the library) ...... enet64.lib(win32.o).

          Things like:
          enet.lib(win32.o):-1: error: LNK2019: unresolved external symbol __imp__WSAStartup@8 referenced in function _enet_initialize
          enet.lib(win32.o):-1: error: LNK2019: unresolved external symbol __imp__timeBeginPeriod@4 referenced in function _enet_initialize
          enet.lib(win32.o):-1: error: LNK2019: unresolved external symbol __imp__WSACleanup@0 referenced in function _enet_initialize
          enet.lib(win32.o):-1: error: LNK2019: unresolved external symbol __imp__timeEndPeriod@4 referenced in function _enet_deinitialize
          enet.lib(win32.o):-1: error: LNK2019: unresolved external symbol __imp__getsockname@12 referenced in function _enet_socket_get_address
          enet.lib(win32.o):-1: error: LNK2019: unresolved external symbol __imp__setsockopt@20 referenced in function _enet_socket_set_option

          1 Reply Last reply Reply Quote 0
          • B
            bodzio131 last edited by

            Well, these are not unresolved symbols from enet library :) Look into "Windows Winsock API":http://msdn.microsoft.com/en-us/library/windows/desktop/ms741394(v=vs.85).aspx, you need to link against Ws2_32.lib.

            1 Reply Last reply Reply Quote 0
            • B
              blah900 last edited by

              Oh thanks! That was the problem.... I didn't realize these were required libraries. I added -lwinmm and -lws2_32 and it compiles!

              1 Reply Last reply Reply Quote 0
              • First post
                Last post