WSAStartup(MAKEWORD(2,2),&wsa); geht nicht???



  • ich glaube dem linker sind die header dateien egal:]

    versuch mal:

    #pragma comment(lib,"wsock32")
    


  • Es ist aber verwunderlich, dass er auch WinMain nicht mehr auflösen kann 😕
    Hast du vielleicht sonst noch was geändert - z.B. Libs aus der "Link-Liste" gelöscht 🙄



  • Hast du vielleicht ein Konsolenproject erstellt?



  • Oder ist der obige Code gar kein Ausschnitt, sondern die gesamte Datei? 🙄



  • nein nein das ist nicht die gesamte datei, sonst dürfte alles stimmen, ich habs in einem mfc Projekt laufen lassen wollen, ging aber nicht, dann hab ich s nach einem tutorial in eine Konsole gesteckt, die machen das dort auch.

    Wenn ich #pragma comment(lib,"wsock32") einbinde geht´s auch nicht und wenn ich die windows.h dazugebe bekomme ich sogar um die 60 Fehler....



  • Wenn du WinMain verwendest musst du aber eine Win32-Anwendung und keine Konsolen-Anwendung erstellen 😉



  • Ah... werd ich gleich umstellen 🙂
    danke erstmal
    l00P



  • ...aber ich verwende ja gar kein WinMain denke ich oder?

    Also das ist der ganze Code in einer Konsolenanwendung:

    #include <winsock2.h>
    #include <stdio.h>
    #include "main.h"
    
    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,2),&wsa);
    }
    


  • Dann ist es wohl gerade anders herum 😃 :
    Du hast anstelle einer Konsolen-Anwendung eine Win32-Anwendung erstellt 🙄

    Die Lib hast du ja jetzt gelinkt, oder? Was hast du in main.h stehen? Was für Fehler bekommst du noch?



  • Also aktuell habe ich eine Konsolenanwendung erstellt mit diesem obigen main.cpp. Der komplette code steht oben. In der main.h steht nur
    int startWinsock(void); sonst nichts.

    Die "Ws2_32.lib" habe ich unter Projects->settings->link->Objects/modules.... dazugeschrieben.

    Folgende Fehler kommen:

    -------------------Configuration: wsaTest - Win32 Debug--------------------
    Linking...
    LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16
    Debug/wsaTest.exe : fatal error LNK1120: 1 unresolved externals
    Error executing link.exe.
    
    wsaTest.exe - 2 error(s), 0 warning(s)
    


  • Du musst aus der main() eine WinMain() machen.



  • wenn ich draus eine winmain() mache kommen folgende fehler:

    --------------------Configuration: wsaTest - Win32 Debug--------------------
    Compiling...
    main.cpp
    C:\Wuff\siesta\thesieata\wsaTest\main.cpp(9) : warning C4007: 'WinMain' : must be '__stdcall'
    C:\Wuff\siesta\thesieata\wsaTest\main.cpp(9) : error C2731: 'WinMain' : function cannot be overloaded
            C:\Wuff\siesta\thesieata\wsaTest\main.cpp(7) : see declaration of 'WinMain'
    Error executing cl.exe.
    
    wsaTest.exe - 1 error(s), 1 warning(s)
    


  • Bei einer Konsolen-Anwendung ist aber main eigentlich schon richtig! WinMain in einer Win32-Anwendung sieht so aus:

    int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
    

    Was steht bei dir unter Projekt - Einstellungen - Linker im Feld Projekt Optionen bei subsytem?
    /subsystem:console oder /subsystem:windows



  • flenders schrieb:

    Bei einer Konsolen-Anwendung ist aber main eigentlich schon richtig! WinMain in einer Win32-Anwendung sieht so aus:

    int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow)
    

    Was steht bei dir unter Projekt - Einstellungen - Linker im Feld Projekt Optionen bei subsytem?
    /subsystem:console oder /subsystem:windows

    ...da steht: /subsystem:windows /incremental:yes



  • Dann hast du eine Win32-Anwendung erstellt, oder etwas an den Einstellungen geändert 😉

    Also entweder auf subsystem:console ändern oder ein neues Projekt erstellen und Konsolen-Anwendung auswählen und den Quelltext rumkopieren 🙂



  • hurra es geht...so ein dummer fehler!!! ärger 😡

    Hab tatsächlich eine win32 Anwendung erstellt...

    Danke für die hilfe
    l00P



  • Oder einfach den /subsysten:blah Teil loeschen, dann geht naemlich ploetzlich beides 🙂


Anmelden zum Antworten