IP Adresse mit C++ einlesen



  • 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++ --help
    

    bei 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


Anmelden zum Antworten