getaddrinfo - Welcher Header ist nun richtig?



  • Hi.

    Ich benutze das Windows XP SP2 RC1 Platform SDK und Visual C++ 7.1. Ich will getaddrinfo benutzen.

    In der Dokumentation steht:
    Header: Declared in Ws2tcpip.h; include Wspiapi.h for Windows 2000/NT and Windows Me/98/95.

    Wenn ich dann Wspiapi.h nehme kriege ich 102 Fehlermeldungen. 😉

    Nehme ich allerdings die Ws2tcpip.h funktioniert es.

    Ist die Dokumentation falsch?

    Hier noch das Testprogramm:

    #include <winsock2.h>
    #include <windows.h>
    #include <Wspiapi.h>
    
    int main()
    {
    	getaddrinfo(NULL, NULL, NULL, NULL);
    }
    


  • Einige Fehler kommen sicher auch davon, dass du die Parameter nicht füllst - siehe getaddrinfo.
    Komischerweise wird im dortigen Beispiel-Code allerdings ws2tcpip.h direkt eingebunden (oder ist das so gemeint, dass man ab xp direkt einbinden soll)?!



  • Einige Fehler kommen sicher auch davon, dass du die Parameter nicht füllst - siehe getaddrinfo.

    Dann krieg ich aber Laufzeitfehler, und keine Compilerfehler.

    Tja, das Beispiel hatte ich auch schon gesehen. Ich bin richtig verwirrt. 🙂

    Ganz unten in der WS2tcpip.h steht auch vielleicht noch ein wichtiger Hinweis:

    //
    // Unless the build environment is explicitly targeting only
    // platforms that include built-in getaddrinfo() support, include
    // the backwards-compatibility version of the relevant APIs.
    //
    #if !defined(_WIN32_WINNT) || (_WIN32_WINNT <= 0x0500)
    #include <wspiapi.h>
    #endif
    


  • Was kriegst du denn für einen Laufzeitfehler ???
    Wenn du wirklich einen Laufzeitfehler kriegst (eine MessageBox mit einer Fehlermeldung), versuch mal die winsock2.h zu includieren, dort müsste es die Funktion eigentlich auch geben (IMHO).

    Du musst aber für die Winsock2.h auch eine Libary einbinden, win2sock.a <- irgendwas in der art.

    Das du überall NULL übergibst geht garantiert nicht, da die Funktion ja nur zurückgibt ob es geklappt hat, oder eben nicht. <- Funktion wäre so nutzlos.



  • Da hast du was falsch verstanden...

    Ich bekomme nur Compilerfehler, wenn ich Wspiapi.h statt WS2tcpip.h einbinde.

    Ich habe getaddrinfo hier nur mit 4 NULL-Zeigern aufgerufen um das Beispiel einfacher zu machen.


Anmelden zum Antworten