Autor Wątek: [Problem] Qt + ENet  (Przeczytany 2625 razy)

Offline Bimbol

  • Użytkownik

# Luty 16, 2014, 00:56:24
Witam,
piszę aktualnie czat w ramach utrwalenia zdobytych wiadomości i do tego celu chciałem wykorzystać bibliotekę ENet, jednak otrzymuję masę błędów linkera. Dodam, że kompiluję to w QtCreator z użyciem kompilatora MSVS 2012.

Plik Chat.pro:
#-------------------------------------------------
#
# Project created by QtCreator 2014-02-15T15:06:39
#
#-------------------------------------------------

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = Chat
TEMPLATE = app


SOURCES += main.cpp\
        chat.cpp

HEADERS  += chat.h

LIBS += -LC:\Qt\enet -lwinmm
LIBS += -LC:\Qt\enet -lws2_32
LIBS += -LC:\Qt\enet -lenet64

Nagłówki pliku chat.h:
#include "chat.h"

#include <QPushButton>
#include <QMessageBox>
#include <enet/enet.h>

Wrzuciłem folder z nagłówkami enetu, do folderu z nagłówkami Qt.

A na koniec dodam kilka przykładowych błędów:
enet64.lib(win32.o):-1: błąd: LNK2019: unresolved external symbol __imp_WSAStartup referenced in function enet_initialize
enet64.lib(win32.o):-1: błąd: LNK2019: unresolved external symbol __imp_timeBeginPeriod referenced in function enet_initialize
enet64.lib(win32.o):-1: błąd: LNK2019: unresolved external symbol __imp_WSACleanup referenced in function enet_initialize
enet64.lib(win32.o):-1: błąd: LNK2019: unresolved external symbol __imp_timeEndPeriod referenced in function enet_deinitialize
enet64.lib(win32.o):-1: błąd: LNK2019: unresolved external symbol __imp_timeGetTime referenced in function enet_host_random_seed

Cóż siedzę trochę przy tym. Wujek google, jak na razie mi nie pomógł.

Z góry dziękuję za pomoc.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline kubx

  • Użytkownik
    • Kanał YT

# Luty 16, 2014, 22:52:41
Dodaj ws_32.lib do linkera.

[edit]
Nie zauważyłem, jednak to coś innego.

-LC:\Qt\enet powinno być podane tylko raz
« Ostatnia zmiana: Luty 16, 2014, 23:03:53 wysłana przez kubx »

Offline Bimbol

  • Użytkownik

# Luty 16, 2014, 23:02:44
Dodaj ws_32.lib do linkera.

[edit]
Nie zauważyłem, jednak to coś innego.

Prawdę mówiąc być może w zły sposób dodałem te liby. Chodź inaczej też nie działa.

Offline Xirdus

  • Redaktor

# Luty 16, 2014, 23:12:33
Może spróbuj przesunąć winmm na koniec?

Offline Bimbol

  • Użytkownik

# Luty 17, 2014, 00:28:54
Niestety to nic nie dało.

EDIT.

Stworzyłem nowy konsolowy projekt. Tym razem zrobiłem to w ten sposób:
#-------------------------------------------------
#
# Project created by QtCreator 2014-02-16T23:40:39
#
#-------------------------------------------------

QT       += core

QT       -= gui

TARGET = ENet
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app


SOURCES += main.cpp

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

LIBS += -lws2_32
LIBS += -lwinmm
LIBS += -LC:/Qt/enet -lenet

Odświerzyłem QMake i przebudowałem projekt. No i udało się, działa.

Dodaję w załączniku paczkę z działającym enetem w Qt, jak by ktoś kiedyś potrzebował.
« Ostatnia zmiana: Luty 17, 2014, 01:55:23 wysłana przez Bimbol »