[gelöst] Native Netzwerkprogrammierung unter QT?

Alles rund um die Programmierung mit Qt
Antworten
john
Beiträge: 110
Registriert: 14. August 2004 20:55
Wohnort: München

[gelöst] Native Netzwerkprogrammierung unter QT?

Beitrag von john »

Hallo Zusammen,

schreibe mir gerade eine Klasse, die in einem seperaten QThread laufen soll und alle ICMP-Nachrichten abfängt, auswertet und dementsprechend Signale an anderen QObjecten senden soll.

Nun aber das Problem: Wenn man die <winsock2.h> includiert, wieso kann man dann nicht auf dessen Funktionen zugreifen? z. B. WSAStartup(), sendto(), recfrom() etc... -halt alles was in der winsock2.h deklariert ist.

Compilieren lässt sich das Programm, erst beim Linken kommen die Fehlermeldungen. siehe:
G:\scan\v4>make
mingw32-make -f Makefile.Release
mingw32-make[1]: Entering directory `G:/scan/v4'
g++ -c -O2 -O2 -frtti -fexceptions -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_NO_DEBUG -DQT_CORE_LIB -DQT_GUI_
LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"C:/Qt/4.0.1/include/QtGui" -I"C:/Qt/4.0.1/include/QtCore" -I"C:/Qt/4.0.1/inc
lude" -I"." -I"C:/Qt/4.0.1/include/ActiveQt" -I"release" -I"." -I"C:/Qt/4.0.1/mkspecs/win32-g++" -o release\icmpWatch.o
icmpWatch.cpp
icmpWatch.cpp: In member function `void icmpWatch::start()':
icmpWatch.cpp:119: warning: comparison between signed and unsigned integer expressions
g++ -mthreads -Wl,-enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-s -Wl,-s -Wl,-subs
ystem,windows -o "release\v4.exe" release\main.o release\portScan.o release\icmpWatch.o release\moc_portScan.o release\m
oc_icmpWatch.o -L"C:\Qt\4.0.1\lib" -lmingw32 -lqtmain -lQtCore4 -lQtGui4
release\icmpWatch.o(.text+0x78e):icmpWatch.cpp: undefined reference to `sendto@24'
release\icmpWatch.o(.text+0x7c3):icmpWatch.cpp: undefined reference to `recvfrom@24'
release\icmpWatch.o(.text+0x803):icmpWatch.cpp: undefined reference to `WSAGetLastError@0'
release\icmpWatch.o(.text+0x83b):icmpWatch.cpp: undefined reference to `WSAStartup@8'
release\icmpWatch.o(.text+0x92a):icmpWatch.cpp: undefined reference to `socket@12'
release\icmpWatch.o(.text+0x9c5):icmpWatch.cpp: undefined reference to `setsockopt@20'
release\icmpWatch.o(.text+0x9e7):icmpWatch.cpp: undefined reference to `gethostbyname@4'
release\icmpWatch.o(.text+0xa43):icmpWatch.cpp: undefined reference to `inet_ntoa@4'
release\icmpWatch.o(.text+0xbae):icmpWatch.cpp: undefined reference to `inet_addr@4'
release\icmpWatch.o(.text+0xc9a):icmpWatch.cpp: undefined reference to `socket@12'
release\icmpWatch.o(.text+0xd35):icmpWatch.cpp: undefined reference to `setsockopt@20'
release\icmpWatch.o(.text+0xd57):icmpWatch.cpp: undefined reference to `gethostbyname@4'
release\icmpWatch.o(.text+0xdb3):icmpWatch.cpp: undefined reference to `inet_ntoa@4'
release\icmpWatch.o(.text+0xf1e):icmpWatch.cpp: undefined reference to `inet_addr@4'
collect2: ld returned 1 exit status
mingw32-make[1]: *** [release\v4.exe] Error 1
mingw32-make[1]: Leaving directory `G:/scan/v4'
mingw32-make: *** [release] Error 2

G:\scan\v4>
Die Klasse funktioniert bereits, aber nur als DOS-Programm. Muss es halt in eine QT-Klasse portieren...

Gruß John
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

man sollte dann auch gegen ws2_32.lib linken...
siehe hier (bis unten): http://msdn.microsoft.com/library/defau ... rtup_2.asp
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
john
Beiträge: 110
Registriert: 14. August 2004 20:55
Wohnort: München

Beitrag von john »

Hallo, danke für die Antwort! Ich habe in meiner .pro-Datei die Zeile:

"LIBS += libwsock32"

hinzugefügt, jetzt klappt es! Super! Mir ist das mit den Libs und "Linken" nicht so ganz klar, gibt's da irgendwo ne gute Übersicht?

Gruß John
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Wenn du Windows-spezifische Libs suchst, würde ich immer bei msdn.microsoft.com nachschauen. Dort steht eigentlich zu jeder Funktion in welcher lib / dll sie zu finden ist.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten