Problem mit Eclipse


  • Administrator

    1. Falsches Forum, das gehört ins Compiler/IDE Forum rein.
    2. Von DevCpp auf Eclipse? Wie kommt man auf so eine Idee? Ich meine, dass du von DevCpp weg willst, das ist klar, aber wieso auf Eclipse umsteigen? Gibt doch deutlich bessere IDEs für C++, welche auch gratis sind:
    - Microsoft Visual Studio Express Edition
    - Code::Blocks
    - Codelite

    Die muss man dann auch nicht mühsam über Plugins umkonfigurieren.

    Grüssli



  • Dravere schrieb:

    1. Falsches Forum, das gehört ins Compiler/IDE Forum rein.
    2. Von DevCpp auf Eclipse? Wie kommt man auf so eine Idee? Ich meine, dass du von DevCpp weg willst, das ist klar, aber wieso auf Eclipse umsteigen? Gibt doch deutlich bessere IDEs für C++, welche auch gratis sind:
    - Microsoft Visual Studio Express Edition
    - Code::Blocks
    - Codelite

    Die muss man dann auch nicht mühsam über Plugins umkonfigurieren.

    Grüssli

    Hast recht. Hab mir Code::Blocks besorgt. Wie verlinke ich hier die nötigen .lib's?

    #include <windows.h>
    
    #include <winsock2.h>
    
    #include <stdio.h>
    
    //Prototypen
    
    int startWinsock(void);
    
    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(2,0),&wsa);
    
    }
    

    Das will ich compiliert haben.

    Habs damit probiert:

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
        cout << "code::blocks" << endl;
        }
    

    Aber Code::Blocks hat nicht kompiliert. Dev.C++ schon. ???


  • Administrator

    1. Du bist immer noch im falschen Forum :p
    2. Ich verwende den Code::Blocks nicht.
    3. Das ist C & WinAPI, wie kommst du überhaupt auf die Idee das im C++ Forum zu posten?
    4. Du musst die Ws2_32.lib linken. Das tut man irgendwo unter den Compileroptionen, ähnlich wie bei DevCpp auch. Einfach mal die Compileroptionen des Code::Blocks durchstöbern.
    5. Zu jedem WSAStartup folgt auch eine WSACleanup .
    http://msdn.microsoft.com/en-us/library/ms742213.aspx
    6. WSAStartup gibt kein long , sondern ein int zurück.
    7. Für die Entwicklung in WinAPI auf Windows wäre wohl die Microsoft Visual Studio Express Edition IDE besser geeignet, aber das ist wohl auch ein wenig Geschmacksache.

    Grüssli



  • ld.exe||cannot find -lWs2_32.lib|
    ||=== Build finished: 1 errors, 0 warnings ===|
    

    😞



  • skullyan schrieb:

    ld.exe||cannot find -lWs2_32.lib|
    ||=== Build finished: 1 errors, 0 warnings ===|
    

    😞

    Wohl nicht in den standard-link-pfaden enthalten. Richtigen Pfad mit übergeben (-L oder so).

    PS:

    #include <stdio.h> // MEEEP das ist C!
    #include <cstdio> // << besser!
    

  • Administrator

    pumuckl schrieb:

    PS:

    #include <stdio.h> // MEEEP das ist C!
    #include <cstdio> // << besser!
    

    Das Programm ist auch C, daher ist <stdio.h> durchaus richtig. Dieser Code da oben stammt von hier:
    http://www.c-worker.ch/tuts/wstut_op.php

    skullyan ist einfach nur im komplett falschen Forum. Nicht mal die Sprache war korrekt 😉

    Grüssli



  • ups, stimmt, übersehn, dass da auch printf() & Co ankamen...
    Dann mal dickes "GZ" an den OP - viel weiter daneben gings wohl nicht mit der Forenwahl 😉 (außer evtl nadrw)



  • HAT SICH ALLES GEKLÄRT. TROTZDEM DANKE @ ALL!!

    #include <windows.h>
    
    #include <winsock2.h>
    
    #include <iostream>
    
    #include <cstdio>
    
    using namespace std;
    
    //Prototypen
    
    int startWinsock();
    
    int main()
    
    {
    
      int rc;
    
      rc=startWinsock();
    
      if(rc!=0)
    
      {
    
        printf("Fehler: startWinsock, fehler code: %d\n",rc);
    
        return 1;
    
      }
    
      else
    
      {
    
        cout << "Winsock gestartet!\n" << endl;
    
      }
    
      return 0;
    
    }
    
    int startWinsock()
    
    {
    
      WSADATA wsa;
    
      return WSAStartup(MAKEWORD(2,2),&wsa);
    
    }
    

    Zufrieden? 😃 is zwar bissel c mit cpp gemixt aba was solls



  • Naja - es ist nicht gerade sinnvoll, nach jeder Zeile eine Zeile frei zu lassen...

    und du solltest auch das letzte printf durch cout ersetzen:

    std::cout << "Fehler: startWinsock, fehler code: " << rc << std::endl

    bb



  • skullyan schrieb:

    if(...)
      {
        printf(...);
      }
      else
      {
        cout << ... << endl;
      }
    

    Der gehört ins kuriositätenkabnett 😉

    Nix für ungut 🙂



  • Hm, Eclipse ist meiner Meinung nach besser als Code::Blocks, wie auch immer.
    In Eclipse kannst du ein Projekt folgendermassen kompilieren, linken und ausfuehren lassen.
    1. Shift + Strg + S (falls nicht gespeicherte Dateien im Projekt offen liegen, wird gefragt, ob man speichern moechte, sodass dieser Punkt nicht unbedingt noetig ist)
    2. Strg + B (kompiliert und linkt das aktuelle Projekt ('Build All'))

    3. entweder Strg + F11 (ausfuehren ohne in die Debug-Sicht zu wechseln)
    oder F11 (oeffnet die Debug-Werkzeuge)

    Gruss
    Cartman


Anmelden zum Antworten