Anzeige:
Ergebnis 1 bis 3 von 3

Thema: Probleme beim Kompilieren von Socketprogrammen

  1. #1
    Registrierter Benutzer
    Registriert seit
    03.02.2006
    Beiträge
    7

    Probleme beim Kompilieren von Socketprogrammen

    Hallo,

    ich versuche mich jetzt ein paar Tage mit Sockets und habe Anfangs versucht mir das ganze mit Tutorials aus dem Internet selbst beizubringen. Allerdings wollte das ganze nie so funktionieren. Egal was ich schrieb, letztendliche scheiterte es schon beim Kompilieren.
    Ich habe mich also im Internet weiter umgesehen nach, schon vorgefertigten Bibliotheken und bin auf folgende Adresse gestoßen. http://www.ijon.de/comp/libs/index.html#nntpmlib
    Meine Idee war erstmal einen kleinen Newsreader zu programmieren. Allerdings scheiterte das ganze auch mit diesen Bibliotheken.
    Zum Test habe ich erstmal das Beispiel aus der Seite genommen. Meine main.cpp sieht so aus:
    Code:
    #include "nntpmlib.c"
    #include <iostream>
    
    int main(){
            nntp_server *ns;
            char *line;
    
            ns = nntp_connect ("news.1und1.de", 119, NULL, NULL, NULL);
            nntp_list_groups (ns, NULL, NULL);
            while ((line = get_line_from_server(ns, NULL))) {
                    printf ("%s\n", line);
                    free (line);
                                                     }
                    nntp_close (ns, NULL, NULL);
    }
    Als Fehlermeldung bekomme ich immer Folgendes:
    nntpmlib.c: In function »char** get_lines_from_server(nntp_server*, int, int*)«:
    nntpmlib.c:227: Warnung: Umwandlung in »int« von »double«
    nntpmlib.c:228: Fehler: ungültige Umwandlung von »void*« in »char**«
    nntpmlib.c: In function »int nntp_next(nntp_server*, int*, char**, int, void (*)(char*), void (*)(char*))«:
    nntpmlib.c:606: Fehler: ungültige Umwandlung von »const char*« in »char*«
    nntpmlib.c:606: Fehler: Argument 2 von »int nntp_send_command(nntp_server*, char*, char**, int*, int*, int*, void (*)(char*), void (*)(char*))« wird initialisiert



    Ähnliche Fehlermeldungen habe ich auch bei meinen ersten Versuchen mit den Tutorials bekommen.
    Fehlen mir Standardbibliotheken?
    Gehe ich die Sache total falsch an?

    Ich würde mich über eure Hilfe sehr freuen.

    Schönen Gruß

  2. #2
    Registrierter Benutzer
    Registriert seit
    18.03.2005
    Beiträge
    211
    #include "nntpmlib.c"

    erstes aua ^^ Quellcode dateien sollt man nie includen. Die werden mit zugelinkt, entweder direkt oder ueber ne bibo (.lib / .so / .a )

    fuer die lib die du nutzen willst gibts sicher ne .h die die deklarationen beinhaltet ...

    was mir auffaellt ....

    Fehler in funktion : char** get_lines_from_server(nntp_server*, int, int*) ...
    im Beispiel line = get_line_from_server(ns, NULL)

    entweder hast du durch das anziehen der c-Datei statt der Schnittstelle die du benutzen solltest ne interne funktion erwischt, die dich nichts angehen sollte ^^ oder das beispiel ist schlichtweg falsch ... oder die lib wurde scho aktualisiert und das beispiel iss veraltet

    edit: sehs grad, die funktion die der compiler anmeckert hat nen s mehr ^^ also kann die syntax scho stimmen, versuch einfach mal die richtige .h einzubinden statt der .c

    und !

    line = get_line_from_server(ns, NULL)
    free (line);

    in ner funktion speicher (fuer die Zeile) zu allokieren und sich drauf verlassen das der anwender die richtige funktion zum wieder freigeben des speichers aufruft is sehr sehr schlechter Stil ... ich wuerd die lib also ziemlich argwoehnisch anschauen ...

    Ciao ...
    Geändert von RHBaum (16-02-2006 um 10:12 Uhr)

  3. #3
    Registrierter Benutzer
    Registriert seit
    03.02.2006
    Beiträge
    7
    Hallo und danke für deine Antwort!
    Ich werde heute, wenn ich zuhause bin, versuchen die .h Datei nochmal einzubinden.
    Da hat der Compiler allerdings auch schon gemeckert.

    Könntest du mir vielleicht eine Bibliothek sagen, die für meine Zwecke besser geeignet ist?
    Das Thema lässt mir nämlich keine Ruhe
    Eine Bibliothek mit deutscher Hilfedatei wäre schön, aber ich komme auch mit Englisch klar.

    Schönen Gruß

    //edit:
    Wenn ich die .h include kommt der Fehler:
    /tmp/ccMtguxZ.o: In function `main':
    main.cpp.text+0x2d): undefined reference to `nntp_connect(char const*, unsigned short, void (*)(char*), void (*)(char*), int*)'
    main.cpp.text+0x42): undefined reference to `nntp_list_groups(nntp_server*, void (*)(char*), void (*)(char*))'
    main.cpp.text+0x70): undefined reference to `get_line_from_server(nntp_server*, int*)'
    main.cpp.text+0x90): undefined reference to `nntp_close(nntp_server*, void (*)(char*), void (*)(char*))'
    collect2: ld gab 1 als Ende-Status zurück
    Geändert von obmib (16-02-2006 um 13:29 Uhr)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •