IP Adresse mit C++ einlesen
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Hallo,
Matthias147 schrieb:
Dabei kommt dann aber folgende Fehlermeldung:
das ist kein Fehler, aber eine Warnung, die man auch nicht ignorieren sollte. Nach MSDN ist der vorletzte Parameter für InternetConnect ein DWORD, es wird aber NULL übergeben, und das muß nicht sein:
m_hConnection = InternetConnect(m_hINet, m_pszFileName, 80, 0, 0, INTERNET_SERVICE_HTTP, 0, 0);g++.exe: compilation of header file requested
das muß auch nicht sein, CGetIP.h muß nicht kompiliert werden (wird ja von CGetIP.cpp includiert)

MfG
-
Soweit klappt es,aber ...
Zitat:
g++.exe: compilation of header file requested
das muß auch nicht sein, CGetIP.h muß nicht kompiliert werden (wird ja von CGetIP.cpp includiert)
ich weiß, die CGetIP.h muss nicht mitkompiliert werden, alos habe ich das ganze jetzt nochmal so compiliert, dabei kommt dann diese Meldung heraus.
$ g++ CGetIP.cpp C:/DOKUME~1/MATTHI~1/LOKALE~1/Temp/cca2baaa.o(.text+0x2a):CGetIP.cpp: undefined reference to `WSAStartup@8' C:/DOKUME~1/MATTHI~1/LOKALE~1/Temp/cca2baaa.o(.text+0x70):CGetIP.cpp: undefined reference to `WSAStartup@8' C:/DOKUME~1/MATTHI~1/LOKALE~1/Temp/cca2baaa.o(.text+0xb5):CGetIP.cpp: undefined reference to `WSACleanup@0' C:/DOKUME~1/MATTHI~1/LOKALE~1/Temp/cca2baaa.o(.text+0xd1):CGetIP.cpp: undefined reference to `WSACleanup@0' C:/DOKUME~1/MATTHI~1/LOKALE~1/Temp/cca2baaa.o(.text+0xf2):CGetIP.cpp: undefined reference to `gethostname@8' C:/DOKUME~1/MATTHI~1/LOKALE~1/Temp/cca2baaa.o(.text+0x118):CGetIP.cpp: undefined reference to `gethostbyname@4' C:/DOKUME~1/MATTHI~1/LOKALE~1/Temp/cca2baaa.o(.text+0x1cc):CGetIP.cpp: undefined reference to `inet_ntoa@4' C:/DOKUME~1/MATTHI~1/LOKALE~1/Temp/cca2baaa.o(.text+0x2a9):CGetIP.cpp: undefined reference to `InternetOpenA@20' C:/DOKUME~1/MATTHI~1/LOKALE~1/Temp/cca2baaa.o(.text+0x2e3):CGetIP.cpp: undefined reference to `InternetConnectA@32' C:/DOKUME~1/MATTHI~1/LOKALE~1/Temp/cca2baaa.o(.text+0x328):CGetIP.cpp: undefined reference to `HttpOpenRequestA@32' C:/DOKUME~1/MATTHI~1/LOKALE~1/Temp/cca2baaa.o(.text+0x361):CGetIP.cpp: undefined reference to `HttpSendRequestA@20' C:/DOKUME~1/MATTHI~1/LOKALE~1/Temp/cca2baaa.o(.text+0x399):CGetIP.cpp: undefined reference to `InternetReadFile@16' C:/DOKUME~1/MATTHI~1/LOKALE~1/Temp/cca2baaa.o(.text+0x46f):CGetIP.cpp: undefined reference to `InternetCloseHandle@4' C:/DOKUME~1/MATTHI~1/LOKALE~1/Temp/cca2baaa.o(.text+0x489):CGetIP.cpp: undefined reference to `InternetCloseHandle@4' C:/DOKUME~1/MATTHI~1/LOKALE~1/Temp/cca2baaa.o(.text+0x4a3):CGetIP.cpp: undefined reference to `InternetCloseHandle@4' c:/Programme/MinGW/bin/../lib/gcc-lib/mingw32/3.2.3/../../../libmingw32.a(main.o)(.text+0x97):main.c: undefined reference to `WinMain@16'Das Problem ist der Compiler erstellt keine Ausführbare Datei.
Was kann den jetzt noch falsch sein?Matthias
-
#include <winsock2.h>
-
Du hast wohl vergessen Ws2_32.lib mitzulinken

-
so habs mal gemacht, und ist auch schon weniger geworden:
$ g++ CGetIP.cpp ws2_32.Lib C:/DOKUME~1/MATTHI~1/LOKALE~1/Temp/ccwhaaaa.o(.text+0x2a9):CGetIP.cpp: unde reference to `InternetOpenA@20' C:/DOKUME~1/MATTHI~1/LOKALE~1/Temp/ccwhaaaa.o(.text+0x2e3):CGetIP.cpp: unde reference to `InternetConnectA@32' C:/DOKUME~1/MATTHI~1/LOKALE~1/Temp/ccwhaaaa.o(.text+0x328):CGetIP.cpp: unde reference to `HttpOpenRequestA@32' C:/DOKUME~1/MATTHI~1/LOKALE~1/Temp/ccwhaaaa.o(.text+0x361):CGetIP.cpp: unde reference to `HttpSendRequestA@20' C:/DOKUME~1/MATTHI~1/LOKALE~1/Temp/ccwhaaaa.o(.text+0x399):CGetIP.cpp: unde reference to `InternetReadFile@16' C:/DOKUME~1/MATTHI~1/LOKALE~1/Temp/ccwhaaaa.o(.text+0x46f):CGetIP.cpp: unde reference to `InternetCloseHandle@4' C:/DOKUME~1/MATTHI~1/LOKALE~1/Temp/ccwhaaaa.o(.text+0x489):CGetIP.cpp: unde reference to `InternetCloseHandle@4' C:/DOKUME~1/MATTHI~1/LOKALE~1/Temp/ccwhaaaa.o(.text+0x4a3):CGetIP.cpp: unde reference to `InternetCloseHandle@4' c:/Programme/MinGW/bin/../lib/gcc-lib/mingw32/3.2.3/../../../libmingw32.a(m )(.text+0x97):main.c: undefined reference to `WinMain@16'Was fehlt denn jetzt noch? Wie kommt man den überhaupt daruaf das z.B. genau die Datei Ws2_32.lib gefehlt hat. Ich hätte das jetzt nie so gesehenn.
Matthias
-
Matthias147 schrieb:
Was fehlt denn jetzt noch?
die Library Wininet.lib...
Matthias147 schrieb:
Wie kommt man den überhaupt daruaf das z.B. genau die Datei Ws2_32.lib gefehlt hat. Ich hätte das jetzt nie so gesehenn.
in dem man genau die Doku liest, in diesem Falle (Wininet.Lib) steht dort in der MSDN zur Funktion InternetOpen:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wininet/wininet/internetopen.asp
der entscheidende Hinweis ganz unten unter "Requirements".
MfG
-
Ich verstehe es nicht, aber es geht immer noch nicht:
$ g++ CGetIP.cpp WS2_32.Lib WinInet.Lib C:/DOKUME~1/MATTHI~1/LOKALE~1/Temp/ccG2baaa.o(.text+0x477):CGetIP.cpp: undefined reference to `InternetOpenA@20' C:/DOKUME~1/MATTHI~1/LOKALE~1/Temp/ccG2baaa.o(.text+0x4b1):CGetIP.cpp: undefined reference to `InternetConnectA@32' C:/DOKUME~1/MATTHI~1/LOKALE~1/Temp/ccG2baaa.o(.text+0x4f6):CGetIP.cpp: undefined reference to `HttpOpenRequestA@32' C:/DOKUME~1/MATTHI~1/LOKALE~1/Temp/ccG2baaa.o(.text+0x52f):CGetIP.cpp: undefined reference to `HttpSendRequestA@20' C:/DOKUME~1/MATTHI~1/LOKALE~1/Temp/ccG2baaa.o(.text+0x567):CGetIP.cpp: undefined reference to `InternetReadFile@16' C:/DOKUME~1/MATTHI~1/LOKALE~1/Temp/ccG2baaa.o(.text+0x63d):CGetIP.cpp: undefined reference to `InternetCloseHandle@4' C:/DOKUME~1/MATTHI~1/LOKALE~1/Temp/ccG2baaa.o(.text+0x657):CGetIP.cpp: undefined reference to `InternetCloseHandle@4' C:/DOKUME~1/MATTHI~1/LOKALE~1/Temp/ccG2baaa.o(.text+0x671):CGetIP.cpp: undefined reference to `InternetCloseHandle@4'aber warum???

wenn ich übrigens einen banalen Fehler einbaue wie Semikolon vergessen, bemängelt der nur diesen Fehler und sonst nichts, wenn aber ansonsten alles Korrekt ist, kommt die Meldung s.o.
Matthias
-
Ich kenne deinen Compiler bzw. deinen Linker nicht, aber bist du sicher, dass die Syntax für das Linken mehrerer Files so ist?!
Matthias147 schrieb:
wenn ich übrigens einen banalen Fehler einbaue wie Semikolon vergessen, bemängelt der nur diesen Fehler und sonst nichts, wenn aber ansonsten alles Korrekt ist, kommt die Meldung s.o.
Die Fehlermeldungen kommen vom Linken - gibt es beim Kompilieren schon Fehler macht er erst gar nicht soweit

-
Naja, sicher bin ich mir nicht, zumindest gehts so mit mehreren cpp files und bei der WS2_32.Lib hats die Meldungen auch schon mal reduziert.
Ich benutze den MinGW 3.
Wie sieht die Syntax den normalerweise aus? ich kanns ja mal probieren.
Matthias
-
Normalerweise ist gut

Ich hab z.B. Visual C++ - da übernimmt sowas die IDE für einen (also man muss nur die ganzen lib-Files hintereinanderhängen)Du kannst ja mal probieren, was passiert, wenn du die beiden lib-Files vertauscht. Wenn dann wieder die anderen Fehler kommen weißt du, dass die Syntax nicht stimmt in der du die File angibst. Kannst du die Anwendung nicht mit -? o.ä. aufrufen, damit die Parameter ausgegeben werden?
-
so, hab mal Versucht, die beiden Lib files zu vertauschen. Dann kommen immenoch dieselben Fehlermeldungen. Wenn ich aber die cpp Datei auch noch mit vertausche, kommen die alten Fehlermeldungen auch wieder dazu.
-? klappt irgendwie nicht.

-
evtl. auch /? o.ä. - gibt es denn keine Doku zu dem Compiler

-
der befehl für die kurzhilfe ist
g++ --helpbei mir macht er alles

g++.exe -c getip.cpp -o getip.o g++.exe -c main.cpp -o main.o g++.exe main.o getip.o -o "getip.exe" -lWs2_32 -lWininet Ausführung beendet Kompilierung erfolgreich@matthias
ich rate dir zu dev-cpp, somit hast du ne ide und den mingw als compiler[edit]
alles wieder geändert
-
yeah, so klappt es.
dev c++, werde ich mir doch wirklich wohl mal angucken müssen.
Vielen Dank
Matthias