Winsock Probleme / Linker error



  • hi leutz, ich benutze die Bloodshed IDE 4. der Benutzt den Mingw Compiler. Ich möchte Winsock starten. Das geht aber nicht. Hier der Code:

    ]
    #include <windows.h>
    #include <winsock2.h>
    #include "c:\bcc55\lib\psdk\wsock32.lib"
    #include <stdio.h>
    
    //Prototypen
    int startWinsock(void);
    int Feedback;
    
    int main()
    {
      long rc;
      rc=startWinsock();
      if(rc!=0)
      {
        printf("Fehler: startWinsock, fehler code: %d\n",rc);
        return 1;
      }
      else
      {
        printf("Winsock gestartet!\n");
      }
      return 0;
    }
    
     int startWinsock(void)
    {
    
      WSADATA wsa;
      return WSAStartup(MAKEWORD(1,1), &wsa);
    
    }
    

    das giebt die Linker Meldung:

    c:\programme\dev-c++\icmp2.o: In function startWinsock': //c/dev-c++/icmp2.c:29: undefined reference toWSAStartup@8'

    wie man sieht, habe ich mal versucht Wsock32.lib einzubinden - das bringt aber auch nichts, da kommt dann folgende Compiler Message:

    1 c:\bcc55\lib\psdk\wsock32.lib
    3 possible real start of unterminated constant

    was ist los ? Ich habe das Winsock Tutorial von c-workers.ch benutzt. Sollte ich besser auf den Borland compiler umsteigen ? büdde nicht... der Bloodshed ist so schön.

    Hilfe wäre Klasse, Die Suchfunktion funktionierte im Moment aus irgend nem Grund nicht, war zu langsam.

    EditBySideWinder: Code-Tags ja, aber bei C/C++-Code bitte die C++-Tags benützen um das Synthax-Highlightning zu aktivieren :).

    [ Dieser Beitrag wurde am 18.11.2002 um 15:28 Uhr von SideWinder editiert. ]



  • klar,
    er muss ja auch erstmal wissen, woher die Funktionen kommen.

    in den Project Options (Compiler Options) -lwinsock32 (oder so ähnlich)

    dann macht er das auch.

    cYa
    DjR



  • Eine .Lib-Datei kann man nicht einfach mit #include einbinden. Eine .Lib-Datei musst in deinem Projekt hinzufügen neben der .c bzw. .cpp Datei. Das gilt auch für eine .obj-Datei.



  • ok, dankeschön hat mich ein bisschen weiter gebracht. Aber jetzt fragt der Linker nach der Datei WS2_32.o (ich habe WS2_32.lib in das Projekt eingebunden) wo kommt die her ? Wir die vom Linker erstellt ? in welchem Verzeichnis, wenn es temporär erstellt werden sollte ?

    greetz.



  • Also wo die .lib-Datei liegt musst du schon selber wissen (Suche?!). Du musst natürlich den kompletten Pfad zur Datei angeben.



  • Ich habe die Library ja eigebunden, korrekt. Aber jetzt sucht der Compileer die .o Datei mit selben Namen. Eigentlich braucht der die doch garnicht ist doch kein C++ programm sondernd nur c.

    .o dateien sind doch objekte oder ?



  • Schau mal unter Projekt->Optionen...
    in das erste Edit-Feld da muss "C:\Dev-C++\Lib\libwsock32.a" rein (natürlich an Deine Verzeichnisse angepasst). Daneben gibts auch einen Button wo Du die Dateien auswählen kannst, die sind glaub ich irgendwo im 'lib' Verzeichnis...



  • Hi, bin jetzt auf den Borland Compiler 5.01 Umgestiegen, da ist leider nur Winsock.h mit bei, aber es geht. Zunächst.

    Winsock Startet und ein Socket lässt sich auch öffnen. Aber wenn ich nun ein UDP paket verschicken will, meldet mir der Compiler bei Folgender Zeile :

    addr.sin_addr = inet_addr("127.0.0.1");

    einen Error:

    Illegal Structure operation

    Wenn ich die Zeile mit der IP Adresse weglasse, läuft das Programm, meine Firewall meldet einen Outbound UDP versuch mit der IP 0.0.87.0

    Ich habe die Code Snippets aus dem C-Workers Sockets Tutorial, das ist aber eignetlich für WInsock2.h gedacht...

    Weiß jemand Hilfe, wie ich die IP Angeben kann bei Winsock.h ? oder wo ich Winsock2.h für Borland 5.01 herbekomme ? Habe schon ein paar Versionen davon ausprobiert, von 2KB bis 90 Kb...

    Alle Tips sind Willkommen 🙂


Anmelden zum Antworten